我要做的就是使用JDK Javah.exe程序生成JNI头文件,但无论我尝试什么,我都会收到错误消息“错误:无法找到'ddg.ndkTest.NativeLib的类文件'“(其中ddg.ndkTest是命名空间,NativeLib是java类文件)。此外,请注意,为了进一步简化过程,我将整个Android项目复制到Java目录。
我已经尝试了以下命令,其中没有一个有效:
javah -jni ddg.ndkTest.NativeLib
javah -verbose -jni -classpath \NDKTest\bin\classes ddg.ndkTest.NativeLib
C:\Program Files\Java\jdk1.7.0_02\bin>javah.exe -jni -classpath \NDKTest\bin\classes\ ddg.ndkTest.NativeLib
如果打电话给我的包裹; “ddg.ndkTest”,我的班级是; “NativeLib.java”,我上面的类路径是正确的。我应该在命令窗口中写什么?
答案 0 :(得分:13)
试试这个:
\NDKTest\bin\classes\
javah ddg.ndkTest.NativeLib
答案 1 :(得分:6)
由于Java9
命令javah
已被deprecation warning
标记,并且从Java10
开始,它已从JDK中删除,因为其功能现已包含在javac
中{1}}命令。
因此,为了在Java9中执行相同操作,您应该运行:
javac -h . NativeLib.java
注意我假设您在正确的目录中
除命令之外的主要区别是,现在JNI标头创建的目标是.java
文件中的源代码,而不是编译的.class
答案 2 :(得分:2)
javah正在寻找NativeLib.class
,而不是源代码。所以你应该把它指向编译类的位置,无论它在哪里。即使不在NDKTest/Bin/Classes
,你显然也期望它。