我想做的就是使用 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”,并且我上面的类路径是正确的。我应该在命令窗口中写什么?
java >= Java9 的更新
Since Java9
命令javah
已被标记为deprecation warning
并从Java10
它已从 JDK 中删除,因为它的功能现在包含在javac
命令。
所以按顺序要从 Java9 执行相同的操作,您应该运行:
javac -h . NativeLib.java
注意我假设您位于正确的目录中
除了命令之外的主要区别在于,现在 JNI 标头创建的目标是中的源代码.java
文件而不是编译后的文件.class
-h 目录指定放置生成的本机头文件的位置。
当您指定此选项时,将为包含本机方法或具有使用 java.lang.annotation.Native 注释的一个或多个常量的每个类生成本机头文件。如果该类是包的一部分,则编译器会将本机头文件放入反映包名称的子目录中,并根据需要创建目录。
https://docs.oracle.com/en/java/javase/11/tools/javac.html#GUID-AEEC9F07-CB49-4E96-8BC7-BCC2C7F725C9 https://docs.oracle.com/en/java/javase/11/tools/javac.html#GUID-AEEC9F07-CB49-4E96-8BC7-BCC2C7F725C9
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)