6

eclipesでこのエラーが発生していますjava.lang.UnsupportedClassVersionError: Bad version number in .class file

実行するjavac -versionと印刷されます

javac 1.5.0_28

eclipes内で右クリックすると、properties-> javaコンパイラが使用していると表示され、1.5次に移動すると、そこにあります。java build pathJRE System Library [JVM 1.5.0 (MacOS X Default)]

なぜこのエラーが発生するのですか?どうすれば修正できますか?

編集

java -versionプリント

java version "1.5.0_28"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_28-b04-382-9M3326)
Java HotSpot(TM) Client VM (build 1.5.0_28-157, mixed mode, sharing)

私のアプリケーションの他のライブラリはlibgdxライブラリです。

完全なエラーは

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:676)
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:317)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
4

5 に答える 5

14

現在のバージョンよりも新しいバージョンのJava用にコンパイルされたクラスを実行しようとすると、このエラーが発生します。たとえば、Java5JVMでJava6以降用にコンパイルされたクラスを使用しようとした場合です。

必ずしも自分のクラスである必要はありません。Java6以降用に構築されたライブラリを使用している可能性があります。

特定のライブラリ(JARファイル)を使用していますか?これらがJava5と互換性があるかどうかを確認してください。または、JavaバージョンをJava6にアップグレードします。

于 2011-06-27T13:13:46.243 に答える
2

私の推測では、Java1.6で構築されたサードパーティのライブラリを使用していると思います。

ちなみに、Java 1.5を使用している理由はありますか?Java 1.6は長い間リリースされており、Java 1.5はまもなくサポートされなくなります(まだサポートされていない場合)。

于 2011-06-27T13:13:58.117 に答える
0

使用しているクラスよりも新しいJava用にコンパイルされたクラスがあります。

スタックトレースには、問題のあるクラスの名前が表示されます。おそらくそれはあなたが使用しているライブラリですか?

于 2011-06-27T13:14:13.937 に答える
0

使用されているJavaのバージョンが、コードが期待していたコピーではない場合があります。

たとえば、$ PATH(この例はUnix上にあります)が/ usr / bin :(その他のディレクトリ)に設定されている場合、javaを実行すると/ usr / bin/javaが取得されます。

    $ java -version
    Javaバージョン「1.5.0_18」
    Java(TM)プラットフォーム、Standard Edition for Business(ビルド1.5.0_18-b02)
    Java HotSpot(TM)サーバーVM(ビルド1.5.0_18-b02、混合モード)
    $ which java
    / usr / bin / java

...しかし、プログラムが機能するには、次のようなものが必要です。

    $ /usr/local/java/jdk1.6/bin/java -version
    Javaバージョン「1.6.0_14」
    Java(TM)SEランタイム環境(ビルド1.6.0_14-b08)
    Java HotSpot(TM)サーバーVM(ビルド14.0-b16、混合モード)

したがって、修正は、Javaを呼び出す前に、正しいバージョンのJavaが存在するディレクトリをパスの先頭に追加するか、絶対パスで適切なバージョンのJavaを呼び出すことです。

于 2013-01-22T18:33:12.400 に答える
0

JREをアップグレードするオプションがない場合は、より低いJavaバージョンでコードをコンパイルできます。

日食から:

プロジェクトのプロパティ>Javaコンパイラ>コンパイラコンプライアンスレベル>[お使いのJREバージョンに設定]

JRE 1.5の互換性の設定については、以下の画面を参照してください

于 2016-11-25T16:01:30.263 に答える