5

コンパイラをJDK1_1InitArgs使用して初期化すると、エラーが発生します。JDK1_1InitArgs vm_args関数を使用するには、この変数を初期化する必要がありますJNI_CreateJavaVM

            JavaVM *jvm;
            JNIEnv *env;
            jmethodID mid;
            JDK1_1InitArgs vm_args; // Line 47
            vm_args.version = 0x00010001; // Line 48
            JNI_GetDefaultJavaVMInitArgs(&vm_args);
            vm_args.classpath = "C:/Program Files/Java/jdk1.7.0/lib;.;";

            JNI_CreateJavaVM(&jvm, &env, &vm_args);
            env = (*jvm)->AttachCurrentThread(jvm,&env,NULL);
            jclass cls = (*env)->GetObjectClass(env,Obj);
            mid = (*env)->GetMethodID(env,cls,"callBack","(Ljava/lang/String;)V");
            (*env)->CallVoidMethodA(env,Obj,mid,(*env)->NewStringUTF(env,"1B"));

参照

エラー:

ここに画像の説明を入力してください

なぜこれらのエラーが発生するのですか?どうすればそれらを取り除くことができますか?

4

2 に答える 2

1

JNI 1.1 はサポートされなくなりました。jvm.hの定義の直前にあるHotSpot の からのコメントを参照してくださいstruct JDK1_1InitArgs

この構造体は、バージョン 1.1 で JNI_GetDefaultJavaVMInitArgs() を使用して VM からデフォルトのスレッド スタック サイズを取得するために、ランチャーによって使用されます。それ以外はサポートされていないため、jni.h から削除されました。

ソース: http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/prims/jvm.h、行 1673

JDK 7 でバージョン 1.1 の JVM を作成することは不可能のようです。つまり、1.2 などの新しいバージョンを使用するか、古い JDK を使用することをお勧めします。

于 2012-06-28T13:14:15.217 に答える