2012-06-06 20 views
5

Quando si inizializza JDK1_1InitArgs utilizzando il compilatore JDK1_1InitArgs vm_args mi dà errori. Ho bisogno di questa variabile inizializzata per utilizzare la funzione JNI_CreateJavaVM.errori durante il tentativo di inizializzare 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

Errori:

enter image description here

Perché ottengo questi errori? Come posso liberarmi di loro?

+1

Tale struttura potrebbe essere stata rimossa dal file di intestazione. Vedi [questo bug report qui.] (Http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5031222) – JoeFish

+0

@JoeFish qual è l'alternativa? –

+0

Non lo so, motivo per cui non l'ho postato come risposta. Sono sicuro che un po 'più di ricerca su Google produrrebbe comunque la soluzione. – JoeFish

risposta

1

JNI 1.1 non è più supportato. Vedere un commento da HotSpot di jvm.h, proprio prima della definizione di struct JDK1_1InitArgs:

Questa struttura viene utilizzata dal programma di avvio per ottenere la dimensione dello stack di default filo dalla VM usando JNI_GetDefaultJavaVMInitArgs() con una versione di 1.1. Poiché non è supportato in caso contrario, è stato rimosso dal jni.h

Fonte: http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/tip/src/share/vm/prims/jvm.h, linea 1673

Sembra essere impossibile creare una JVM di versione 1.1 in JDK 7 - il che significa che potresti voler utilizzare una versione successiva come 1.2 o utilizzare un JDK precedente.

Problemi correlati