如何使用IntelliJ IDEA创建jni头文件

15
我想在IntelliJ IDEA中创建头文件。我这样做:
文件>设置>工具>外部工具
然后我点击+,指定标题并将参数设置如下:
程序: C:\Program Files\Java\jdk1.8.0_25\bin
参数: -d C:\Users\Administrator\Documents\Visual Studio 2013\Projects\JniExampleLibrary -jni Example.JniExample 工作目录: C:\Program Files\Java\jdk1.8.0_25\bin
但是,在单击确定后,在上面定义的路径中没有JniExample.h文件。
请问问题出在哪里?
提前致谢

2
程序不应该是C:\Program Files\Java\jdk1.8.0_25\bin\javah吗?(您的描述缺少实际运行的命令) - Bastien Jansen
嗨。我修复了程序,包含了javah,但是头文件仍未创建。还有其他想法吗? - Sona
2个回答

32

这是我用来生成.h文件的IntelliJ IDEA设置:(适用于版本12.1.6,其他版本可能类似)

  1. 文件->设置->外部工具
  2. 点击"编辑工具"对话框中的加号按钮
  3. 下面是我使用的表单名称/值对:
    • 名称:javah
    • 组:Java
    • 描述:Java本地接口C头文件和存根文件生成器
    • 选项:全选
    • 显示在:全选
    • 工具设置...
    • 程序:$JDKPath$\bin\javah.exe
    • 参数:-jni -v -d $FileDir$ $FileClass$
    • 工作目录:$SourcepathEntry$
  4. 点击确定,再点击确定
  5. 导航到包含native方法的java类
  6. 在编辑器中显示java类,转到工具→Java→javah
  7. 注意在与您的类相同的目录中生成的.h文件。

1
刚在Mac OS上的IntelliJ 2017.2中测试了一下,我可以确认它仍然非常好用! - rainbowgoblin
1
这太棒了。我以前总是讨厌记住如何使用所有路径启动javah。 - Anthony
3
从JDK 8开始,使用javac -h代替javah。参数/参数:-h . $FileDir$/$FileName$ - Datz
1
对于那些需要类路径依赖的人,请使用以下参数/参数:-jni -d "$FileDir$" -classpath "$Classpath$" $FileClass$ - JoVer M

8

我正在使用Java 11(OpenJDK)进行编译,因此我没有可用的javah。

现在javac中包含创建头文件的选项,因此我将其添加为编译器选项。

  1. 文件->设置->构建、执行、部署->编译器->Java编译器
  2. 在“附加命令行参数”中添加:-h YourOutDir

(IntelliJ Community 2019.2,其他版本应该类似)

例如:

-h C:/Development/Java/YourApp/cpp

我在IntelliJ中使用“-h $FileDir$”或其他宏命令没有成功。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接