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 が指定されていることを考えると、Java の 10 年前のバージョン用にビルドされる可能性はほとんどありません。おそらくJava 1.7の機能を使用しています。

于 2014-01-10T09:07:05.730 に答える
0

コードを取得し、1.5 としてコンパイルし (コンパイルできる場合)、独自のリポジトリに挿入します。

于 2014-01-10T08:55:36.383 に答える