2011-06-27 23 views
4

eclipesでこのエラーが発生しましたjava.lang.UnsupportedClassVersionError: Bad version number in .class file。私はjavac -versionを実行すると、私は右クリックした場合java.lang.UnsupportedClassVersionError:.classファイルのバージョン番号が正しくありません

はそれがeclipes内

javac 1.5.0_28 

を印刷し、プロパティ - > Javaコンパイラは、それは私が1.5を使用していると私はその後、java build pathに行けば、私はそこでJRE System Library [JVM 1.5.0 (MacOS X Default)]を持っていると言います。

なぜこのエラーが発生するのですか?どのように修正しますか?

EDITS

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ライブラリです。

フルエラーは、あなたが持っているものよりも新しいバージョンのJava用にコンパイルされたクラスを実行しようとすると、このエラーが出る

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) 
+0

を設定するための画面の下を参照してください。あなたには、いくつかのライブラリを持っていますかあなたのビルドパスに? – wjans

+0

stacktrace全体を特に '.class'ファイルのバージョンとして投稿できますか? – gabuzo

+0

あなたのプロジェクトはソースレベル1.5ですか? – Giann

答えて

12

です。たとえば、Java 6またはそれ以降のバージョン用にコンパイルされたクラスをJava 5 JVMで使用しようとするとします。

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

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

+0

私のjava prefsで私は私のリストの一番上にJava SE 6を移動し、元のエラーはなくなりました(1.6も使用するようにビルドパスが変更されました)、今は 'java.lang.UnsatisfiedLinkError'エラーが発生します。 – dotty

+0

'UnsatisfiedLinkError'はネイティブ(非Java)ライブラリが見つからないことを意味します。 – Jesper

2

Java 1.6で構築されたサードパーティライブラリを使用していると思います。

ところで、Java 1.5を使用している理由はありますか? Java 1.6は間もなくリリースされ、Java 1.5はサポートされなくなりました。

0

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

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

0

使用されているJavaのバージョンが、コードが予期していたコピーではないことがあります。例えば

、あなたの$ PATH(この例では、Unixである)の/ usr/binに設定されている場合:(他のディレクトリ)は、Javaの実行時には/ usr/binに/ javaのになるだろう:

 

    $ java -version 
    java version "1.5.0_18" 
    Java(TM) Platform, Standard Edition for Business (build 1.5.0_18-b02) 
    Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode) 
    $ which java 
    /usr/bin/java 

...しかし、あなたのプログラムが動作するように、このようなものを必要とします。

 

    $ /usr/local/java/jdk1.6/bin/java -version 
    java version "1.6.0_14" 
    Java(TM) SE Runtime Environment (build 1.6.0_14-b08) 
    Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode) 

ので修正は、javaを呼び出す前のjavaのあなたの正しいバージョンがパスの先頭に住んでいるディレクトリを追加、または呼び出すことだろう絶対パスで良いバージョンのJava。

0

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

プロジェクトのプロパティ> Javaコンパイラ>コンパイラ準拠レベル> [あなたが持っているものは何でもJREバージョンに設定]

は、JRE 1.5互換性

関連する問題