【发布时间】:2011-11-09 14:07:09
【问题描述】:
我正在尝试使用“javah - jni”生成一个 C 头文件,而 javah.exe 返回一个我以前从未见过的错误。我使用 JNI 是因为我使用 NDK 进行 C/C++ android 开发。
这是错误信息:
An exception has occured in the compiler (1.7.0_01).
java.lang.ClassCastException:
com.sun.tools.javac.api.ClientCodeWrapper$WrappedJavaFileManager cannot be cast to
com.sun.tools.javac.file.JavacFileManager
at com.sun.tools.javac.main.Main.compile(Main.java:411)
at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132)
at com.sun.tools.javah.JavahTask.run(JavahTask.java:513)
at com.sun.tools.javah.JavahTask.run(JavahTask.java:335)
at com.sun.tools.javah.Main.main(Main.java:46)
这是我与 jni 一起使用的 Java 文件:
package AndroidTest.AccelerometerTest
public class NativeCaller{
final private static String LIB_NAME = "AccelerometerTest";
static
{
System.LoadLibrary( LIB_NAME );
}
public static native int TestMethod();
public static native float ComputePointPosition();
}
我在 sun 的 Bug Parade 中搜索过,但找不到任何有用的东西。
编辑:
这是我的平台:
java version "1.7.0_01"
Java(TM) SE Runtime Environment (build 1.7.0_01-b08)
Java HotSpot(TM) Client VM (build 21.1-b02, mixed mode, sharing)
我正在像这样调用 javah:javah -jni NativeCaller.java
我称它在 .java 文件夹中。
我尝试使用完整的包名调用它,但找不到类。
【问题讨论】:
标签: java java-native-interface android-ndk