如何使用 javac 而不是 javah 使用 Eclipse 创建 C++ JNI 头文件

how to use javac instead of javah for creating c++ JNI header using Eclipse

我正在尝试按照教程 (http://www.lithiumhead.com/notes/windows_jni) 从 Eclipse 生成 c++ 头文件。它基于使用 javah(就像我发现的许多其他教程一样),但 javah 在 jdk 的较新版本中不存在。当我得到 "error: invalid flag: -jni" 时,简单地用 javac 替换 javah 是行不通的。我知道我必须使用 -h 标志,但我不知道在哪里! 这是当前状态的快照:

非常感谢您的帮助,以及 link 最新的良好(分步)教程(适用于 jdk 的较新版本,日食等)

你差不多明白了,你只需要稍微改变一下标志。整行是

-h jni -d ${env_var:TMPDIR} ${selected_resource_loc}

分成几个部分:

  • -h jni:在相对于工作目录的jni目录中输出头文件。 (我设置为项目本身,而不是 bin
  • -d ${env_var:TMPDIR}:输出class个文件到一个临时目录。我们不管它,所以我把它输出到$TMPDIR。在 Windows 上,您可能需要 TEMP
  • ${selected_resource_loc}:传递当前选中文件的完整路径。您也可以硬编码 "HelloWorld.java"。

运行 该工具为我生成了 jni/helloJNI_HelloJNI.h

这是我window的截图,供参考。 .

试试这个:

-h jni -d ${env_var:TMPDIR} -s ${selected_resource_loc}