【问题标题】:JDK 1.8 on Linux missing JNI include fileLinux 上的 JDK 1.8 缺少 JNI 包含文件
【发布时间】:2014-09-19 16:28:15
【问题描述】:

我正在尝试编译以下项目:

https://github.com/entropia/libsocket-can-java

我总是收到此错误消息?有谁知道如何修复它,这可能是 Linux 上 JDK 1.8.0.11 中的一个错误(x64 Debian Wheezy)吗?

In file included from jni/de_entropia_can_CanSocket.h:2:0,
             from jni/cansocket.cpp:23:
/opt/jdk1.8.0_11/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory
#include "jni_md.h"
                ^

【问题讨论】:

    标签: java linux java-native-interface java-8 header-files


    【解决方案1】:

    好像是这样。 #include "jni_md.h" 会将文件包含在与jni.h 相同的目录中,但它放在linux 文件夹中。

    在以前的 JDK 版本中,似乎该文件和另一个文件放在 include/linux 文件夹中,但 include 中的两个文件都有符号链接。

    所以你可以创建两个文件的符号链接:

    $ sudo ln -s /opt/jdk1.8.0_11/include/linux/jni_md.h /opt/jdk1.8.0_11/include/jni_md.h
    $ sudo ln -s /opt/jdk1.8.0_11/include/linux/jawt_md.h /opt/jdk1.8.0_11/include/jawt_md.h
    

    编辑

    正如 Absurd-Mind 和 Mikkel 在 cmets 中所述,还可以选择将该路径添加到 makefile 编译器选项中:

    -I$(JAVA_HOME)/include/linux/
    

    【讨论】:

    • 我也已经找到了,无论如何谢谢你.. 似乎是一种BUG!!!不是吗??
    • 成功了吗?是的,在以前的 JDK 版本中,这些文件似乎存在于linux 目录中,但include 文件夹中的每个文件都有符号链接。将在答案中包含该信息。
    • 在编译器选项中添加-I$(JAVA_HOME)/include/linux/不是更好吗?
    • @Absurd-Mind 我不这么认为。您必须记住,每次您都需要编译需要 JNI 的东西。这将使它随时工作。当然,如果您没有 root 访问权限,那将是一个更好的选择。
    • 我同意@Absurd-Mind。通过将 include 选项添加到 makefile,此配置将与源代码的其余部分一起保存在源代码控制中。否则,您必须记住每次在新机器上检查代码时都创建符号链接。
    【解决方案2】:

    不,这不是错误。解决此问题的正确方法是提供-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux 编译器选项。这样,您的构建脚本就可以保持可移植性。

    OP 在 Linux 上遇到了这个问题,但是如果有人在 windows 上遇到这个问题,请添加以下编译器选项。

    -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" 其中JAVA_HOME指向你的JDK安装目录,通常是'C:\Program Files\Java\jdk1.{7|8}.{}_{xx}'

    【讨论】:

      【解决方案3】:

      也有可能已经部署了多个JDK,而链接到$JAVA_HOME 的那个不是正确的。您需要将$JAVA_HOME 更新为包含jni_md.h 文件的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 2012-02-09
        • 1970-01-01
        • 2019-07-21
        • 1970-01-01
        相关资源
        最近更新 更多