JNI 通过选择要加载的 JVM .dll来创建 JVM



我的PC上有几个Java安装。是否可以以某种方式传递应该从哪个路径加载 jvm.dll 的设置?以下代码使用 JNI 创建 JVM:

void createJVM()
{
JavaVMInitArgs vm_args; 
JavaVMOption options[4]; 
int n = 0;     
char * str;
str= new char[1000];
sprintf(str, "-Djava.class.path=%S\tst.jar", myPath);
options[n++].optionString = str; 
str= new char[1000];
sprintf(str, "-Djava.library.path=%S\lib;%S", myPath, myPath);
options[n++].optionString = str;
str= new char[1000];
sprintf(str, "-Duser.dir=%S", myPath);
options[n++].optionString = str;
vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = n;     
vm_args.options = options;     
vm_args.ignoreUnrecognized = false;

JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); 
}
我知道有

2 个选项:第一个是在运行可执行文件之前将 PATH 环境变量设置为您想要使用的 jvm.dll目录,第二个是在运行时动态链接到 jvm.dll例如通过使用 LoadLibrary:

HINSTANCE hinstLib = LoadLibrary(TEXT("D:\desired_jvm\jre6\bin\client\jvm.dll"));
typedef jint (JNICALL *PtrCreateJavaVM)(JavaVM **, void **, void *);
PtrCreateJavaVM ptrCreateJavaVM = (PtrCreateJavaVM)GetProcAddress(hinstLib,"JNI_CreateJavaVM");
jint res = ptrCreateJavaVM(&jvm, (void**)&env, &vm_args);
//...

最新更新