簡體   English   中英

如何在OS X Lion上安裝Java本機開發標頭

[英]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。 我認為,矯枉過正,但涵蓋了所有基礎。

  1. http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下載Java 8 JDK

  2. 安裝它。

  3. 看看Oracle把它放在哪里:

     $/usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home 
  4. 符號鏈接從那里到Apple過去的地方:

     $cd /System/Library/Frameworks/JavaVM.framework/Versions $sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents ./CurrentJDK 
  5. 用於在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM