2016-09-14 2 views
1

JDK8がインストールされており、JAVA_HOMEが正しいパスに設定されています。私は問題なくJavaを使うことができます。しかし、C++からJavaコードを実行しようとすると、実際に古いバージョンのJRE6をインストールするように求められます。C++ JNIがMac Legacy JRE6をインストールしたい

私は私のコードで

JavaVMInitArgs vm_args; 
vm_args.version = JNI_VERSION_1_8; 

ので、JRE6が要求されていることを奇妙です。 C++ JNIに既存のJDK8インストールを使用させるにはどうすればよいですか?コードはlibjvm.dylibを使用する場合、この問題が発生した何らかの理由

JDK8 is installed, but JRE6 is promoted to install.

+0

野生の推測:これは32ビットコードですか? –

+0

ネイティブJNIコードを新しいバージョンのJavaと再コンパイルしますか? –

+0

それはあなた自身のコードですか?私。リンクしているライブラリに影響を与えていますか? – user2543253

答えて

2

libjli.dylibも同じ機能を持ちますが、JRE 6ダイアログをスキップします。私はそれがなぜそのようになっているかを確認することを心配したことはありません。

-ljvmとリンクする場合は、これを-ljliに置き換えてください。 dlopendlsymを一緒に使用する場合は、他のライブラリ名を使用してください。

+0

私はSET(CMAKE_SHARED_LINKER_FLAGS "-ljli")を設定しました。以前は-ljvmでしたが、何も変わりませんでした。私はコードでdlopenやdlsymを使用しませんが、githubプロジェクトからリンクしている他のコードは両方を使用しています。おそらくそれが理由だろうか? – Makoto

+0

あなたのバイナリでlibjvmがまだ参照されている場合は、 'otool'でチェックすることができます – user2543253

関連する問題