2012-06-06 128 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

我不知道,這就是爲什麼我沒有發佈這個答案。我相信更多的谷歌搜索將產生解決方案。 – JoeFish

回答

1

不再支持JNI 1.1。請參閱從HotSpot的jvm.h一種意見,struct JDK1_1InitArgs定義的前面:

這種結構用於通過發射與 版本1.1來從VM使用JNI_GetDefaultJavaVMInitArgs默認線程 堆棧大小()。因爲它不支持其它,它已被從jni.h

來源除去 :http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/prims/jvm.h,線1673

這似乎是不可能創建一個JVM版本中JDK 7 1.1 - 這意味着您可能想要使用更高版本(如1.2),或使用較舊的JDK。