美文网首页
JNI 解惑

JNI 解惑

作者: 你可记得叫安可 | 来源:发表于2020-08-15 11:03 被阅读0次

    1. Q:Visual Code 中出现错误 无法打开 源 文件 "jni.h" 如何解决?

    A: 这个错误是因为 Visual Code 的插件 IntelliSense 设置的 include 路径没有找到 jni.h。需要将 jvm 对外的路径加入到 C++ 的搜索路径:

    • which java 找到 java 的安装路径:/usr/bin/java
    • ll /usr/bin/java:得到 lrwxr-xr-x 1 root wheel 74B 6 13 17:24 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 可以看到这个 java 是一个连接,真正的路径是后面的
    • cd /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands: 该目录下有一个命令是 java_home,表示当前使用的 javahome 路径。
    • ./java_home:得到:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home(根据你当前使用的 Java 版本的不同,./java_home 会指向不同的地址)
    • 该路径下有个 include 目录,里面就有 jni.h。因此这个目录就是 IntelliSense 需要搜索的路径(在 VS CodeC/C++ 插件的设置中找到 includePath 选项,将搜索路径添加进去。添加时可以选择环境变量为路径前缀,这样可以避免绝对路径)。
    • 然后 jni.h 又包含了 jni_md.h,而这个文件在 MacOS 下的目录是 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/include/darwin,因此需要将这两个目录都加入到 include 搜索中。
    • 编译时如果使用命令行编译,则需要 -I"$JAVA_HOME/include"
      我的 C/C++ 插件中的 Include Path 配置如下:
      image.png

    https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

    相关文章

      网友评论

          本文标题:JNI 解惑

          本文链接:https://www.haomeiwen.com/subject/jnpwlktx.html