Where can I find the jni headers for Mac OS

无人久伴 提交于 2020-06-08 07:18:47

问题


I'm not asking where I can find it on my own computer, I'm asking where I can get it.

I've done my google homework, and I didn't find the headers in those paths. There wasn't even a Header folder in my /System/Library/Java/JavaVirtualMachines/... and stuff and I don't have a Developer folder under root.

Now I'm pretty sure I don't have those headers installed, I checked the MacOS developer website but I only found some broken links.

Shouldn't OpenJDK or SunJDK provide the jni.h header for MacOS somewhere?


回答1:


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

But this depends on your environment.




回答2:


  1. jdk8 download web url: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

download it and install.

  1. check java version:
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.find 'java' original path and ‘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. get ‘include’ folder and jni.h

    now you will find a ‘include’ folder with in ‘/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home’, and open it ‘jni.h’ will be found.




回答3:


You can use the java_home command to find the correct location. See the Oracle docs.

So for example in your makefile you could have:

JAVA_HOME:=`/usr/libexec/java_home`
CPPFLAGS:=-I $(JAVA_HOME)/include -I $(JAVA_HOME)/include/darwin

Note that you also need to add $(JAVA_HOME)/include/darwin to the include path so it can find jni_md.h which is the machine-specific part and is included by jni.h




回答4:


On Mac OS X 10.8.5, I use "/System/Library/Frameworks/JavaVM.framework/Headers", like:

HelloJNI.o : HelloJNI.c HelloJNI.h
gcc -I"/System/Library/Frameworks/JavaVM.framework/Headers" -fpic -c $< -o $@

BTW, I am using this version of 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)


来源:https://stackoverflow.com/questions/20771803/where-can-i-find-the-jni-headers-for-mac-os

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!