我有一段非常简单的代码,它创建了一个JVM实例并销毁它。
status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
...
status = (*jvm)->DestroyJavaVM(jvm);
...
它可以正常工作,JVM可用,状态成功。
但当我再次尝试执行它时,它会因为一个奇怪的错误“没有这样的文件或目录”而失败。同样适用于不同版本的oracle和open jdk。有人能解释一下吗?
我有一段非常简单的代码,它创建了一个JVM实例并销毁它。
status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
...
status = (*jvm)->DestroyJavaVM(jvm);
...
它可以正常工作,JVM可用,状态成功。
但当我再次尝试执行它时,它会因为一个奇怪的错误“没有这样的文件或目录”而失败。同样适用于不同版本的oracle和open jdk。有人能解释一下吗?
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html#destroy_java_vm
此外,OpenJDK的错误报告JDK-4712793“JNI:在调用DestroyJavaVM()后在JNI_CreateJavaVM()中失败”指出:JNI_GetCreatedJavaVMs
来检查是否已存在Java虚拟机,并重复使用已找到的虚拟机。 - user2543253