2012-06-06 125 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。