NDK java失败:类文件有错误的版本50.0,应该是49.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的每个新版本都会增加类的版本号文件。下面的列表显示了我所知道的类版本号Java 6: Version 50.0Java 5(1.5):版本49.0Java 1.4.2: Version 48.0

我不明白,我用的是1.6,Eclipse设置为JDK兼容1.6,我从/usr/lib/jvm/java-6-sun/jdk1.6.0_31/bin/javah文件夹运行java。

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

我不知道为什么它说它应该是49,当我使用1.6。

更多信息Javac -version -> Javac 1.6.0_31javap -v -classpath bin/classes com.acme.ndktest.Sample | grep version次要版本:0,主要版本:50

在/etc/alternatives中,大多数java项目指向java-6-sun,如java和javac但是javaws指向java-6-openjdk-amd64

我正在运行Eclipse 3.7此外,Ant与构建这些header

有什么关系吗?

问题是一些包已经安装到/usr/java/packages/lib/ext

javac使用这些参数来决定使用的最大jdk版本。所以这样做会失败

javac SomeFile.java -target 1.6 

给出这个错误信息Javac version 1.6 not able build for target 1.6

当您使用verbose选项运行它时javac -verbose -version SomeFile.java

它会列出/usr/java/packages/lib/ext

目录下的所有文件

将所有文件移出/usr/java/packages/lib/ext

编译得很好。

最新更新