当前位置: 首页 > 面试题库 >

为JDK 10中的类文件生成JNI头文件

巫马曜文
2023-03-14
问题内容

Java本机接口(JNI)不可或缺的一部分是通过C标头桥接JVM代码和本机代码。过去,生成这些头文件的方法非常简单:只需javah在类文件上调用命令行实用程序即可。然后,此过程将为使用native修饰符标记的任何方法生成原型。

但是,从Java
10开始,该javah实用程序已被删除,建议的替代品是javac的新标志“
-h”。如果可以使用Java源文件,则替换可以正常工作,但是在只有编译的类文件可用的情况下,替换效果不佳。(引发此问题的问题是我正在尝试从Scala源生成JNI绑定。我目前的方法是先编译它们,然后在生成的类文件上运行javah。)

在只有编译的类文件可用的情况下,是否有一种方法可以生成C头文件,类似于以前的方法javah


问题答案:

我们可以使用gjavah生成JNI头文件。



 类似资料:
  • 15.3.2.JNI 头文件 接下来需要做的首先是,创建相应的JNI头文件。这需要用到一个Java的标准工具,也就是javah。它附带在JDK中,你可以在JDK/bin中找到它。 跳转到项目的bin目录,执行: [Fibonacci/bin]> javah -jni com.marakana.FibLib javah -jni取一个类名作为参数。需要注意,不是所有的类都默认处于Java的Class

  • 我正在使用IntelliJ IDEA从LeanFT项目创建一个jar工件。 jar工件已生成,但带有以下错误消息: 发生JNI错误,请检查您的安装并重试 当试图直接执行jar文件时。 当我使用IDE执行时,它正在工作。不需要任何参数或参数值。当我从简单的“你好世界”生成一个jar文件时,我收到同样的错误。 堆栈跟踪:

  • 是jdk编译器吗?还是Tomcat(或其他web服务器,例如WebLogic)?如果Tomcat生成类文件,类文件是否通过任何编译检查,如java编译检查?

  • 使用 Hexo 生成静态文件快速而且简单。 $ hexo generate 监视文件变动 Hexo 能够监视文件变动并立即重新生成静态文件,在生成时会比对文件的 SHA1 checksum,只有变动的文件才会写入。 $ hexo generate --watch 完成后部署 您可执行下列的其中一个命令,让 Hexo 在生成完毕后自动部署网站,两个命令的作用是相同的。 $ hexo generate

  • 生成类库映射文件optimize:autoload 可以使用下面的指令生成类库映射文件,提高系统自动加载的性能。 >php think optimize:autoload 指令执行成功后,会在rumtime目录下面生成classmap.php文件,生成的类库映射文件会扫描系统目录和应用目录的类库。

  • 我有两个顶级班;每个都有一个同名的内部类: 我的期望是最终得到四个类文件,包括一个$TestCase。类和B$TestCase。类,这是我从命令行编译时得到的。然而,Eclipse只是创建了测试用例。类,并声明当我尝试编译B.java时“类型TestCase已经定义”。 是否有一个Eclipse选项,我可以设置为生成(我认为是标准的)A$TestCase.class和B$TestCase.clas