pro*_*eve 5 c java java-native-interface
当我JDK1_1InitArgs使用JDK1_1InitArgs vm_args编译器初始化时给我错误.我需要初始化此变量才能使用该函数JNI_CreateJavaVM.
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"));
Run Code Online (Sandbox Code Playgroud)
错误:

为什么我会收到这些错误?我怎么能摆脱他们?
不再支持 JNI 1.1。请参阅 HotSpot 的评论jvm.h,就在 的定义之前struct JDK1_1InitArgs:
启动程序使用此结构通过版本为 1.1 的 JNI_GetDefaultJavaVMInitArgs() 从 VM 获取默认线程堆栈大小。由于它不受其他支持,因此已从 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。