【发布时间】:2013-03-24 00:34:14
【问题描述】:
我查看了有关 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
当我使用 1.6 时,我不确定为什么它说应该是 49。
更多信息 javac-版本-> 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也与构建这些标头有任何关系
【问题讨论】:
-
/usr/lib/jvm/java-6-sun/jdk1.6.0_31/bin/javah -version 输出什么?你确定 NDK 支持 Java 6?
-
javah 版本“1.6.0_31”
-
javac -version的输出是什么(没有附加完整路径)?在我看来,java工具链并不一致。要检查您的类文件的版本,您可以运行javap -v -classpath bin/classes com.acme.ndktest.Sample | grep version。在 Linux 上,您可能需要检查/etc/alternatives链接。 -
javac-版本-> javac 1.6.0_31 | javap -v -classpath bin/classes com.acme.ndktest.Sample | grep version 次要版本:0,主要版本:50 在替代方案中,大多数 java 项目都指向 java-6-sun,如 java 和 javac 但是 javaws 指向 java-6-openjdk-amd64java-6-openjdk-amd64 我正在运行 Eclipse 3.7 Ant也与构建这些标头有任何关系
标签: android eclipse android-ndk javah