Java Linux上的JDK1.8缺少JNI包含文件

Java Linux上的JDK1.8缺少JNI包含文件,java,linux,java-native-interface,java-8,header-files,Java,Linux,Java Native Interface,Java 8,Header Files,我正在尝试编译以下项目: https://github.com/entropia/libsocket-can-java 我总是收到这个错误消息?有人知道如何修复它吗?它可能是Linux上JDK1.8.0.11(x64 Debian Wheezy)中的一个bug吗 似乎是这样#include“jni_md.h”会将该文件包含在与jni.h相同的目录中,但它位于linux文件夹中 在以前的JDK版本中,文件和另一个文件似乎放在include/linux文件夹中,但include中有指向这两个文件的

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

https://github.com/entropia/libsocket-can-java
我总是收到这个错误消息?有人知道如何修复它吗?它可能是Linux上JDK1.8.0.11(x64 Debian Wheezy)中的一个bug吗

似乎是这样
#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
编辑 正如Lubustic Mind和Mikkel的评论中所述,还可以选择将该路径添加到makefile编译器选项中:

-I$(JAVA_HOME)/include/linux/

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

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

-I”%JAVA\u HOME%\include“-I”%JAVA\u HOME%\include\win32“

JAVA|u HOME指向JDK安装目录的地方,通常是
'C:\Program Files\JAVA\jdk1.{7|8}.{7|xx}
也可能有多个
JDK
已部署,链接到
$JAVA|u HOME
的不是正确的。您需要将
$JAVA\u HOME
更新为包含
jni\u md.h
文件的文件。

我也已经找到了这个文件,谢谢您。。好像是一种虫子!!!不是吗?它成功了吗?是的,在以前的JDK版本中,这些文件似乎存在于
linux
目录中,但是
include
文件夹中有指向每个文件的符号链接。将在答案中包含该信息。在编译器选项中添加
-I$(JAVA\u HOME)/include/linux/
不是更好吗?@荒谬的是,我不这么认为。您必须记住,每次都需要编译需要JNI的东西。这将使它随时工作。当然,如果你没有根访问权限,那将是一个更好的选择。我同意“荒谬的头脑”。通过向makefile添加include选项,此配置将与其他源代码一起保留在源代码管理中。否则,每次在新机器上签出代码时,都必须记住创建符号链接。
-I$(JAVA_HOME)/include/linux/