5

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"));

参考

错误:

在此处输入图像描述

为什么我会收到这些错误?我怎样才能摆脱它们?

4

2 回答 2

1

不再支持 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。

于 2012-06-28T13:14:15.217 回答
0

在您的情况下,您可以简单地将其替换为 struct

JavaVMInitArgs

但是,请确保也正确初始化版本成员,例如

vm_args.version = JNI_VERSION_1_6;
于 2020-06-16T12:54:34.523 回答