![](/img/trans.png)
[英]How to install Java 8 runtime environment on OS X Mountain Lion
[英]How to install Java native development headers on OS X Lion
我正在嘗試構建一個JNI項目,但我似乎無法找到JNI頭文件(例如jni.h
)。 我已經從https://developer.apple.com/downloads/安裝了“Java for Mac OS X 10.7 Developer Package”。
各種在線資源建議標題應該在/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指出Apple現在在/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/Contents/Home
。 經過一段時間的努力,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 Headers的Ruby GEM。 我認為,矯枉過正,但涵蓋了所有基礎。
從http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下載Java 8 JDK
安裝它。
看看Oracle把它放在哪里:
$/usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
符號鏈接從那里到Apple過去的地方:
$cd /System/Library/Frameworks/JavaVM.framework/Versions $sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents ./CurrentJDK
用於在JavaVM.framewrk中創建Headers目錄的符號鏈接:
$cd /System/Library/Frameworks/JavaVM.framework $sudo ln -nsf Versions/CurrentJDK/Home/include/ ./Headers
這對我來說是固定的。 我還沒有為定義JAVA_HOME
而煩惱,因為我不需要它。
您可能需要安裝Java Documentation包來獲取標頭; 對於最后幾個版本,它們尚未包含在JDK包中。 安裝后,它們將顯示在/System/Library/Frameworks/JavaVM.framework/Headers中。
[edit] Apple過去常常將JNI標頭與JDK doc包捆綁在一起。 這已不再是這種情況; JNI頭文件應與Java開發人員包捆綁在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.