2012-06-06 11 views
5

JDK1_1InitArgsを使用してJDK1_1InitArgs vm_argsを初期化するとエラーが表示されます。 この変数を初期化して、関数JNI_CreateJavaVMを使用する必要があります。vm_argsを初期化しようとするとエラーが発生する

  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")); 

Reference

エラー:

enter image description here

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

+1

その構造体がヘッダファイルから削除されている可能性があります。 [このバグレポートはこちら](http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5031222) – JoeFish

+0

@JoeFish代替手段は何ですか? –

+0

私は知らないので、答えとして投稿しなかったのです。私はいくつかのGoogleの検索が解決策をもたらすだろうと確信しています。 – JoeFish

答えて

1

JNI 1.1はサポートされなくなりました。右struct JDK1_1InitArgsの定義の前に、ホットスポットのjvm.hからのコメントを参照してください:

この構造はJNI_GetDefaultJavaVMInitArgsを使用してVMからデフォルトのスレッド スタックサイズを取得するためにランチャーが使用している()1.1の バージョンで。それはそうでない場合はサポートされていないとして、それは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を使用したりすることができます。

関連する問題