我查看了有关 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的每个新版本都会增加该类的版本号 文件。下面的列表显示了我知道的类版本号 Java 6:版本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
我不确定为什么它说它应该是49,当我使用1.6时。
更多信息 javac -version - > javac 1.6.0_31 javap -v -classpath bin / classes com.acme.ndktest.Sample | grep版本 次要版本:0,主要版本:50
在/ etc / alternatives中,大多数java项都指向java-6-sun,就像java和javac一样 但javaws指向java-6-openjdk-amd64
我正在运行Eclipse 3.7 Ant也可以构建这些标题
答案 0 :(得分:0)
问题是有些软件包已经安装到了 / usr / java / packages / lib / ext由另一个应用程序。
javac正在使用这些来决定使用的最大可能jdk版本。 所以这样做会失败
javac SomeFile.java -target 1.6
提供此错误消息 Javac 1.6版无法为目标1.6构建
使用详细选项运行它时 javac -verbose -version SomeFile.java
它会列出/ usr / java / packages / lib / ext
中的所有文件将所有文件移出/ usr / java / packages / lib / ext
编译好。