我正在尝试编译以下项目:
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"
^
答案 0 :(得分: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
如Absurd-Mind和Mikkel的评论中所述,还可以选择将该路径添加到makefile编译器选项中:
-I$(JAVA_HOME)/include/linux/
答案 1 :(得分: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}'
答案 2 :(得分:0)
也有可能部署了多个JDK
,而链接到$JAVA_HOME
的那个不是正确的。您需要将$JAVA_HOME
更新为包含jni_md.h
文件的文件。