生成Java JNI标题

 2023-01-19    331  

问题描述

我要做的就是使用jdk javah.exe程序生成jni头文件,但是无论我尝试什么,我都会继续收到错误消息”错误:无法找到’ddg.ndktest.nativelib的类文件'”(其中ddg.ndktest是名称空间,nativelib是Java类文件).另外,请注意,要进一步简化过程,我将整个Android项目复制到Java目录.

我已经尝试了以下命令,它们都没有起作用:

生成Java JNI标题

  • 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”,上面我的class路径是正确的.我应该在命令窗口中写什么?

推荐答案

尝试以下方法:

  1. 首先建立您的课程
  2. 将目录调低为\NDKTest\bin\classes\
  3. 运行javah ddg.ndkTest.NativeLib

其他推荐答案

java> = = java9

更新

因为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/java/javase/11/tools/javac.html#guid-aeec9f07-cb49-4e96-8bc7-8bc7-bcc2c725c9

其他推荐答案

Javah正在寻找NativeLib.class,而不是源代码.因此,您应该将其指向汇编的课程,无论它在哪里.即使不是在NDKTest/Bin/Classes中您显然期望的地方.

以上所述是小编给大家介绍的生成Java JNI标题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25846.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。