jni.h:没有这个文件或目录。

33

我一直在按照这个教程进行操作,但在第5步时,GCC输出以下内容:

    HelloWorld.c:1:17: error: jni.h: No such file or directory
    In file included from HelloWorld.c:3:
    HelloWorld.h:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
    HelloWorld.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’

我知道包含目录因系统而异,所以我尝试相应地调整命令,但我似乎无法在我的系统上找到正确的目录。 我正在使用Ubuntu 10.04LTS。


9
+1 表示“赞同”,意思是“不管多简单,都应该对他人有益”。 - Alex Gitelman
3个回答

32

打开终端并输入:

locate jni.h

这应该告诉您在系统上每个名为jni.h的文件所在位置。我使用的是ubuntu 11.04,在这个系统上,它的位置是:

/usr/lib/jvm/java-6-openjdk/include/jni.h
/usr/lib/jvm/java-6-sun-1.6.0.26/include/jni.h

你可能还需要从仓库获取它:

sudo apt-get install openjdk-6-jdk 

如果你没有安装它,这个应该能解决问题。


7
既然我找到了jni.h,为了完成我的构建,我该怎么做?将其添加到我的路径中吗? - bheussler
2
安装 sudo apt-get install openjdk-8-jdk,但仍然 locate jni.h 没有任何输出。 - Daniel

6

jni.h是和JDK一起存在的。对我而言,它位于jdk1.6.0_25/include/目录下。

默认情况下,我认为Ubuntu不会自带带开发库的JDK,所以您需要从Oracle下载最新版JDK并将其安装到某个位置。

或者像@Leif建议的那样安装openjdk,如果它可以在10.04 LTS上运行。尽管我个人更喜欢Sun/Oracle的版本。


2
在Ubuntu 14.04中运行:
sudo apt-get install openjdk-7-jdk openjdk-7-jre-lib

现在,您已经将头文件放入了 /usr/lib/jvm/java-7-openjdk-amd64/include 目录下。
对于 OpenJDK 6:
sudo apt-get install openjdk-6-jdk openjdk-6-jre-lib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接