Linux上的JDK 1.8缺少JNI包含文件

ara*_*van 17 java linux java-native-interface header-files java-8

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

https://github.com/entropia/libsocket-can-java
Run Code Online (Sandbox Code Playgroud)

我总是收到此错误消息?有谁知道如何解决它,它可能是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"
                ^
Run Code Online (Sandbox Code Playgroud)

Sal*_*lem 25

看来是这样.#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
Run Code Online (Sandbox Code Playgroud)

编辑

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

-I$(JAVA_HOME)/include/linux/
Run Code Online (Sandbox Code Playgroud)