3

hereから取得したコードを使用して、C から Java コードを実行しようとしています。JVM の実行を試みるコードは次のとおりです。

JNIEnv *env;
    JavaVMInitArgs vm_args;
    JavaVMOption options;
    options.optionString = "-Djava.class.path=D:\\Java Src\\TestStruct";
    vm_args.version = JNI_VERSION_1_6;
    vm_args.nOptions = 1;
    vm_args.options = &options;
    vm_args.ignoreUnrecognized = 0;

    int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);

コードは正常にコンパイルされますが、実行しようとすると次のエラーが発生します。

VM の初期化中にエラーが発生しました ネイティブ ライブラリを読み込めません: 依存ライブラリが見つかりません

この質問を見て、依存関係ウォーカーを使用して、不足しているバイナリを見つけました。私が行方不明ieshims.dllであり、これによれば、上記のdllがvista以降で使用されているwer.dll私のコンピューターから(私はXPを使用しています)。 それで、いくつかの質問が頭に浮かびます:

  • どうすればこれを取り除くことができますか?
  • そもそもなぜこのエラーが発生するのですか? XP で JVM をロードできませんか?

私はWindows XPを使用しており、Visual Studio 2008、JDK 1.7がインストールされています(1.6でも試しました)。

4

2 に答える 2

3

別の方法があります - カスタムの場所から jvm.dll を動的にロードし、ネイティブ ライブラリを指す java.library.path 変数を設定できます。この方法では、システム env PATH に依存する必要はありません。

他のスレッドの例を次に示します。

C++ で JNI を使用して JVM を作成しても戻りません

于 2013-09-26T13:38:39.060 に答える