Как установить собственные заголовки разработки Java в OS X Lion

Я пытаюсь создать проект JNI, но не могу найти заголовки JNI (например, jni.h). Я установил «Пакет разработчика Java для Mac OS X 10.7» из https://developer.apple.com/downloads/.

Различные онлайн-ресурсы предполагают, что заголовки должны находиться в таких местах, как /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 теперь устанавливает JDK в /Library/Java/JavaVirtualMachines, а заголовки JNI были в /Library/Java/JavaVirtualMachines/1.7.0.jdk/ Contents/Home/include/jni.h.

Но я все еще застрял на своей реальной цели, которая состоит в том, чтобы создать оболочки JNI для LevelDB (согласно инструкциям на github.com/fusesource/leveldbjni). Чтобы указать Maven на правильный JDK, я добавил /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/binв начало пути и установил для JAVA_HOME значение /Library. /Java/JavaVirtualMachines/1.7.0.jdk/Contents/Главная.После некоторого пыхтения 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. У меня есть jni.h в /Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home/include/.

20
задан Eric Leschinski 11 June 2013 в 17:49
поделиться