在Linux系统下使用jdk1.8编译项目时,遇到如下问题:
原因:
好像是 #include "jni_md.h"
会将文件包含在与jni.h
相同的目录中,但是现在找不到了。
解决办法
在以前的JDK版本中,jni_md.h
似乎和另一个文件都位于include / linux
文件夹中,但是include中都有指向这两个文件的符号链接。
于是,先在本地系统查找jni_md.h
文件的位置,使用如下命令:
find / -name jni_md.h 2> /dev/null
在我的系统里,找到jni_md.h
的路径为:
/usr/lib/jvm/jdk1.8.0_221/include/linux/jni_md.h
果然在include/linux
文件夹下,因此,可以仅创建如下两个文件的符号链接:
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_221/include/linux/jni_md.h /usr/lib/jvm/jdk1.8.0_221/include/jni_md.h
$ sudo ln -s /usr/lib/jvm/jdk1.8.0_221/include/linux/jawt_md.h /usr/lib/jvm/jdk1.8.0_221/include/jawt_md.h
最后顺利解决该问题!
补充
上述问题还有一种解决办法,可以修改项目的makefile
文件,在编译选项中加入:
-I$(JAVA_HOME)/include/linux/
这种办法从项目层面来解决,如果只针对项目本身,选择该方法较好。