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

 2023-01-19    371  

问题描述

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

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

我总是收到此错误消息?有人知道如何修复它吗?在linux(x64 debian wheezy)上,JDK 1.8.0.11中可能是一个错误吗?

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

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"
                ^

推荐答案

似乎是如此. #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

编辑

如《荒谬》和《米克尔评论》中所述,还有可以将该路径添加到makefile编译器选项中:

-I$(JAVA_HOME)/include/linux/

其他推荐答案

不,这不是错误.解决此问题的正确方法是提供-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}’

其他推荐答案

也有可能部署了一个以上的JDK,而链接到$JAVA_HOME的一个也不是正确的.您需要更新$JAVA_HOME其中包含jni_md.h文件.

以上所述是小编给大家介绍的Linux上的JDK 1.8缺少JNI包含文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25763.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。