7

Mac で Java 7 update 9 を少しいじってみたところ、興味深いことがわかりました。

を使用して単純な Java プログラムを実行し、JFrameを使用してそれにアタッチしましたlldb。次に、この Java プログラムによってロードされたライブラリをチェックしたところ、次のことがわかりました。

"/System/Library/Frameworks/JavaVM.framework/JavaVM"初期化。

だから私は2つの質問があります:

  1. このJavaVMはJava 7に対して何をしますか? Mac 上の Java 7 は、Windows および Linux 上の対応するバージョンと同様に自己一貫性があると思いました。「nm」を使用すると、この JavaVM が libjvm.dylib にも定義されている JNI_CreateJavaVM のような多くの関数を定義していることがわかります。

  2. Java 7 を使用する JNI ライブラリには何をリンクすればよいですか? まだJavaVM.framework?以下にあるライブラリにリンクできますか

    /Library/Java/JavaVirtualMachine/jdk.1.7.0 直接。

どんな助けでも大歓迎です。

4

2 に答える 2

0

Mac 上の Oracle JDK は、他の場所の Oracle JDK と同じように宣伝されています。コマンド、ヘッダー、およびライブラリがあります。JDK のコンテンツを他の場所で使用できるはずです。通常、LoadLibrary でロードされる JNI ライブラリを作成して使用します。呼び出しインターフェースに関する個人的な経験を報告することはできません。

于 2013-12-15T02:28:48.927 に答える
0

最初の部分では、その JavaVM は Mac JavaVM (1.6) を指しています。Info.plist ファイルを詳しく見てみると、Mac Java は (とりわけ) JNI をサポートしているように見えますが、Oracle Java は CommandLine のみをサポートしています。Mac OS X で 1.7 にリンクできるようには見えません。関連する質問もたくさんあります。

JNI をサポートする JVM を見つけるには、次のようにします。

/usr/libexec/java_home -t JNI

これはおそらく 1.6.0 JDK を返すはずです。引数を指定して実行すると、-V使用可能な JVM の完全なリストを取得できます。

于 2013-12-15T00:44:05.190 に答える