如何在OS X Lion上安装Java本机开发头

我正在尝试构建一个JNI项目,但我似乎找不到JNI头(例如jni.h)。我从https://developer.apple.com/downloads/安装了“Java for Mac OS X 10.7开发人员包”。

各种在线资源表明标题应位于/System/Library/Frameworks/JavaVM.framework/Headers或/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/include等位置,但我可以’在任何地方找到它们 – 安装程序似乎没有创建它们。

我看到其他JDK组件 – 例如,/System/Library/Frameworks/JavaVM.framework/Commands/javah – 但不是JNI头。有什么建议么?

更新:technomage指出,苹果现在在/ Library / Java / JavaVirtualMachines下安装JDK,JNI头在/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/include/jni.h。

但我仍然坚持我的实际目标,那就是为LevelDB构建JNI包装(根据github.com/fusesource/leveldbjni上的说明)。要将Maven指向正确的JDK,我将/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/bin添加到PATH的前端,并将JAVA_HOME设置为/Library/Java/JavaVirtualMachines/1.7.0。 JDK /内容/首页。哼了一阵子后,Maven现在失败了:

[INFO] --- maven-hawtjni-plugin:1.5:build (default) @ leveldbjni-osx ---  
[INFO] Extracting /Users/steve/leveldb/leveldbjni/leveldbjni/target/leveldbjni-99-master-SNAPSHOT-native-src.zip to /Users/steve/leveldb/leveldbjni/leveldbjni-osx/target/native-build-extracted  
[INFO] executing: /bin/sh -c ./configure --disable-ccache --prefix=/Users/steve/leveldb/leveldbjni/leveldbjni-osx/target/native-build/target --with-leveldb=/Users/steve/leveldb/leveldb --with-snappy=/Users/steve/leveldb/snappy-1.0.3 --with-universal --with-leveldb=/Users/steve/leveldb/leveldb --with-snappy=/Users/steve/leveldb/snappy-1.0.3  
...  
[INFO] configure: JAVA_HOME was set, checking to see if it's a JDK we can use...  
[INFO] checking if '/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home' is a JDK... no  
[INFO] configure: javac was on your path, checking to see if it's part of a JDK we can use...  
[INFO] checking if '/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home' is a JDK... no  
[INFO] configure: Taking a guess as to where your OS installs the JDK by default...  
[INFO] checking if '/System/Library/Frameworks/JavaVM.framework' is a JDK... no  
[INFO] configure: error: JDK not found. Please use the --with-jni-jdk option

我不知道Maven正在寻找什么来识别“我们可以使用的JDK”?一些挖掘导致我到了http://www.arm4.org/trac/browser/branches/architecture/m4/jni.m4,似乎在几个地方寻找jni.h并尝试编译它,但我不知道这个jni.m4是否有任何实际的关系Maven。我在/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/include/中有jni.h。

最佳答案
我知道这是一个旧的线程,但是这里是我今天(今年3月14日下午)做的,所以我可以构建一些需要Java头的Ruby GEM。过度杀戮,但是涵盖了所有的基础,我想。

>从下载Java 8 JDK
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
>安装它
>查看Oracle所在的位置:

$/usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home

>从那里到苹果曾经把它放在哪里:

$cd /System/Library/Frameworks/JavaVM.framework/Versions
$sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents ./CurrentJDK

>在JavaVM.framewrk中创建Headers目录的Symlink:

$cd /System/Library/Frameworks/JavaVM.framework
$sudo ln -nsf Versions/CurrentJDK/Home/include/ ./Headers

这固定的东西给我。我没有打扰定义JAVA_HOME,因为我没有需要它。

转载注明原文:如何在OS X Lion上安装Java本机开发头 - 代码日志