0

javahの失敗に関するさまざまな投稿を確認しましたが、このエラーで発生するものは見つかりませんでした。

error: cannot access com.acme.ndktest.Sample
bad class file: bin/classes/com/acme/ndktest/Sample.class
class file has wrong version 50.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
com.sun.tools.javac.util.Abort
    at com.sun.tools.javac.comp.Check.completionError(Check.java:169)
    at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149)

インターネットで見つけた最も近い情報は、この http://yonghoon.wikidot.com/ndk#toc4でした。

JVMの新しいリリースごとに、クラスファイルのバージョン番号が増加します。以下のリストは、私が知っているクラスのバージョン番号を示しています。Java6:バージョン50.0 Java 5(1.5):バージョン49.0 Java 1.4.2:バージョン48.0

1.6を使用していますが、EclipseはJDK準拠1.6に設定されています。/usr/lib/jvm/java-6-sun/jdk1.6.0_31/bin/javahフォルダーからjavahを実行しています。

/usr/lib/jvm/java-6-sun/jdk1.6.0_31/bin/javah -classpath bin / classes -jni com.acme.ndktest.Sample

1.6を使用しているのに、なぜ49になるはずだと表示されるのかわかりません。

詳細情報javac-version->javac 1.6.0_31 javap -v -classpath bin / classes com.acme.ndktest.Sample | grepバージョンマイナーバージョン:0、メジャーバージョン:50

/ etc / Alternativesでは、ほとんどのjavaアイテムはjavaやjavacのようにjava-6-sunを指していますが、javawsはjava-6-openjdk-amd64を指しています。

私はEclipse3.7を実行しています。また、Antはこれらのヘッダーの構築と関係がありますか

4

1 に答える 1

0

問題は、一部のパッケージが別のアプリケーションによって/ usr / java / packages / lib/extにインストールされていたことでした。

これらは、使用する可能性のある最大のjdkバージョンを決定するためにjavacによって使用されていました。したがって、これを行うと失敗します

javac SomeFile.java -target 1.6 

このエラーメッセージを表示するJavacバージョン1.6はターゲット1.6用にビルドできません

詳細オプションjavac-verbose-versionSomeFile.javaを使用して実行した場合

/ usr / java / packages / lib/ext内のすべてのファイルが一覧表示されます

すべてのファイルを/usr/ java / packages / lib/extから移動した後

正常にコンパイルされます。

于 2013-08-07T10:26:09.560 に答える