在Mac OS上,我该在哪里找到jni头文件?

9
我不是在问我自己电脑上的位置,而是想知道在哪里可以找到它。
我已经做了谷歌搜索,但没有在那些路径中找到头文件。甚至在我的/System/Library/Java/JavaVirtualMachines/...和其他地方都没有一个Header文件夹,而且在我的根目录下也没有Developer文件夹。
现在我很确定我没有安装这些头文件,我查看了MacOS开发者网站,但只找到一些损坏的链接。
在MacOS上,OpenJDK或SunJDK应该提供jni.h头文件吧?

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html有什么问题吗? - manuell
@manuell 是的,那就是我得到JDK的地方。但是jni.h没有包含在Mac DMG中。 - TwilightSun
4个回答

11

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h

但这取决于您的环境。


1
很遗憾,没有Headers目录。我完全卸载了JDK并重新安装,就像你说的那样,它就出现了。 - TwilightSun

10
你可以使用 java_home 命令来查找正确的位置。请参见 Oracle 文档
所以例如,在你的 makefile 中,你可以这样写:
JAVA_HOME:=`/usr/libexec/java_home`
CPPFLAGS:=-I $(JAVA_HOME)/include -I $(JAVA_HOME)/include/darwin

请注意,您还需要将 $(JAVA_HOME)/include/darwin 添加到包含路径中,以便找到 jni_md.h,它是特定于机器的部分,并由 jni.h 包含。


8
  1. jdk8下载网址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载安装jdk8。

  1. 检查Java版本:
sodino:~ sodino$ java -version 
java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

3.查找'java'的原始路径和'java_home':

sodino:~ sodino$ which java
/usr/bin/java
sodino:~ sodino$ ls -n /usr/bin/java
lrwxr-xr-x  1 0  0  74 Sep 30  2014 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
sodino:~ sodino$/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
  1. 获取 'include' 文件夹和 jni.h

    现在你会发现一个名为 'include' 的文件夹,在 '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home' 中,打开它,你将找到 'jni.h'。


4
在Mac OS X 10.8.5上,我使用"/System/Library/Frameworks/JavaVM.framework/Headers",例如:
HelloJNI.o : HelloJNI.c HelloJNI.h
gcc -I"/System/Library/Frameworks/JavaVM.framework/Headers" -fpic -c $< -o $@

顺便提一下,我正在使用这个版本的Java:

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

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