3

JNIを介してJavaを実行するMSVC++プロジェクトを構築しています。PCにいくつかのJavaバージョンをインストールしました(jdk1.4およびjre7)。

環境変数:

JAVA_HOME=C:\Program Files (x86)\Java\jre7
PATH=...
C:\Program Files (x86)\Java\jre7\jre\bin\server
C:\Program Files (x86)\Java\jre7\bin
C:\Program Files (x86)\Java\jre7\lib
C:\Program Files (x86)\Java\jre7\include
C:\Program Files (x86)\Java\jre7\include\win32
...

Javaを静的に呼び出そうとすると、jdk1.4からjvm.dllをロードしようとしてクラッシュします(これは2番目の問題です)。jdk1.4の名前を変更すると、jvm.dllがないため、インストールディレクトリプロジェクトを開始できないため、jdk1.4を検索していることがわかります。プロジェクトがjdk1.4を探しているのはなぜですか?環境変数をjre7パスに設定しました。

Javaを動的にロードする場合、ロードする正確なdllを指定することにより、すべてが正常に実行されます。

動的にロード:

...    
HINSTANCE ghDllInstance = LoadLibrary(L"C:\\Program Files (x86)\\Java\\jdk1.7.0_01\\jre\\bin\\server\\jvm.dll");
...
4

0 に答える 0