0

我正在开发一个需要在运行在 1.5 JVM 上的传统 WebSphere 服务器上运行的 Web 应用程序。

我的问题是,如果我在我的 pom 文件中将源/目标级别设置为 1.5,它可以正常工作

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

直到我向我的项目添加依赖项:

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>1.1.1</version>
</dependency>

我检查了它的 pom 文件,它有 1.7 作为源/目标:

<configuration>
        <source>1.7</source>
        <target>1.7</target>
        <optimize>true</optimize>
        <debug>true</debug>
</configuration>

当我尝试启动我的应用程序时出现此错误:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

如果我在项目 maven 中设置目标级别失败并出现另一个错误:

[ERROR] javac: source release 1.7 requires target release 1.7

我能做些什么来解决这个问题?

4

2 回答 2

2

您正在使用 maven,这意味着spark-core从 maven Central 中提取依赖项作为 .jar 文件中的已编译字节码。

github 上该项目的pom已将其编译为 Java 7 字节码。我愿意打赌,这就是上传到 maven Central 的内容。

您可以针对 Java 5 并使用该库的唯一方法是克隆项目,修改其 pom 以指定 1.5,然后构建您自己的 jar。

也就是说,鉴于他们在 pom 中指定了 1.7,它不太可能为 10 年前的 Java 版本构建;他们可能正在使用 Java 1.7 的特性。

于 2014-01-10T09:07:05.730 回答
0

获取代码,将其编译为 1.5(如果可以编译)并插入到您自己的存储库中。

于 2014-01-10T08:55:36.383 回答