2012-06-06 5 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은 더 이상 지원되지 않습니다. 바로 struct JDK1_1InitArgs의 정의 전에, 핫스팟의 jvm.h에서 주석을 참조하십시오

이 구조는 1.1의 버전 JNI_GetDefaultJavaVMInitArgs를 사용하여 VM에서 기본 스레드 스택 크기()를 얻기 위해 실행하는 데 사용됩니다. , http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/prims/jvm.h 라인 1673

JVM은 JDK 7에서 1.1 버전 만들 불가능할 것으로 보인다

을 - : 그것은 그렇지 않으면 지원되지 않습니다, 그것은

jni.h 소스에서 을 제거되었습니다 즉, 1.2와 같은 이후 버전을 사용하거나 이전 JDK를 사용하려고 할 수 있습니다.

관련 문제