jni.h:没有这样的文件或目录

Jac*_*k H 31 c++ java java-native-interface gcc

我一直在关注本教程,在第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’
Run Code Online (Sandbox Code Playgroud)

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

Lei*_*sen 29

打开终端并输入:

locate jni.h
Run Code Online (Sandbox Code Playgroud)

这应该告诉你每个名为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
Run Code Online (Sandbox Code Playgroud)

您可能还需要从回购中获取它:

sudo apt-get install openjdk-6-jdk 
Run Code Online (Sandbox Code Playgroud)

如果你没有安装它,应该做的伎俩.

  • 既然我已经知道了jni.h,我该怎么办才能完成我的建设呢?把它添加到我的路径? (6认同)
  • 安装 `sudo apt-get install openjdk-8-jdk`,但仍然 `locate jni.h` 没有给我任何结果 (2认同)

Ale*_*man 5

jni.h和JDK一起生活.对我来说是:jdk1.6.0_25/include/.

默认情况下,我认为Ubuntu不会将JDK与开发库配合使用,因此从Oracle 下载最新的JDK版本并将其安装在某处.

或者你可以安装openjdk为@Leif建议,如果它适用于10.04 LTS.虽然,我个人更喜欢Sun/Oracle的那个.