NDK javah失败:类文件有错误的版本50.0,应该是49.0

时间:2013-03-24 00:34:15

标签: android eclipse android-ndk javah

我查看了有关 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也可以构建这些标题

1 个答案:

答案 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

编译好。