【问题标题】:Compile a Maven dependency with another JDK使用另一个 JDK 编译 Maven 依赖项
【发布时间】:2014-07-09 08:52:10
【问题描述】:

我有一个使用 JDK 1.5 的项目(由于项目遗留问题),我想使用 Restlet。目前我在 pom.xml 中获得了当前构建部分:

<build>

    <plugins>
        [...]
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>2.3.1</version>
           <configuration>
               <source>1.5</source>
               <target>1.5</target>
           </configuration>
       </plugin>       
    </plugins>

  </build>

  <repositories>
        <repository>
            <id>maven-restlet</id>
            <name>Restlet repository</name>
            <url>http://maven.restlet.com</url>
        </repository>
    </repositories>

    <properties>
        <restlet-version>2.2.1</restlet-version>
        <spring-version>3.1.1.RELEASE</spring-version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.restlet.jse</groupId>
            <artifactId>org.restlet</artifactId>
            <version>${restlet-version}</version>
        </dependency>
        <dependency>
            <groupId>org.restlet.jse</groupId>
            <artifactId>org.restlet.ext.jackson</artifactId>
            <version>${restlet-version}</version>
        </dependency>
    </dependencies>

当我通过 Eclipse 运行 mvn install 时,出现以下错误:

[ERROR] src/main/java/com/****/SomeFile.java:[3,-1] cannot access org.restlet.Component
bad class file: ****\.m2\repository\org\restlet\jse\org.restlet\2.2.1\org.restlet-2.2.1.jar(org/restlet/Component.class)
class file has wrong version 50.0, should be 49.0

我了解该错误是因为我尝试使用 Java 5 编译项目,但使用的是 Java 6 库。我如何在 JDK 1.5 中使用或编译我的依赖项?

【问题讨论】:

    标签: java eclipse maven restlet


    【解决方案1】:

    您将不得不使用旧版本。如果你查看Official Restlet Framework Blog,它在2.2版本的消息中是这样说的:

    我们不再支持 Java 5,自 Restlet Framework 1.0 版以来就一直如此。如果您由于其他要求仍需要支持 Java 5,我们鼓励您继续使用 Restlet Framework 2.1。

    【讨论】:

      【解决方案2】:

      如果不重新编译,您将无法使用它们。为此,您需要源代码,并且在许多情况下需要一些构建脚本才能正确完成构建。

      java 版本是 .class 文件的一部分,因为您告诉 Maven 为 Java 5 编译,编译器将拒绝只使用版本高于 49.0 的 .class 文件(这是 Java 5 的类文件版本) .

      因此,您需要 .class 文件的版本为 49.0,因此您需要重新编译库以及可能的依赖项。在这个过程中,您甚至可能必须考虑到代码可能会使用更新的语言功能或 JDK 库,因此这可能是一项艰巨的任务。在许多情况下,尝试提高使用 Java 6 的限制或寻找其他库可能会更好。

      【讨论】:

        猜你喜欢
        • 2014-03-22
        • 2011-11-17
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2021-11-05
        • 1970-01-01
        • 2023-03-14
        • 2016-01-27
        相关资源
        最近更新 更多