在调用DestroyJavaVM之后,重新调用JNI

编程入门 行业动态 更新时间:2024-10-22 18:43:22
本文介绍了在调用DestroyJavaVM之后,重新调用JNI_CreateJavaVM会返回-1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图在调用DestroyJavaVM之后回忆起JNI_CreateJavaVM。

I am trying to recall JNI_CreateJavaVM after calling DestroyJavaVM.

我按以下顺序调用它们:InitJVM - > ReleaseJVM - > InitJVM

I call them in following order: InitJVM -> ReleaseJVM -> InitJVM

首次初始化时,JNI_CreateJavaVM返回0并正常工作。 第二次在销毁后初始化时,JNI_CreateJavaVM返回-1并且不起作用。

First time when initialing, JNI_CreateJavaVM returns 0 and works fine. second time when initialing after destroying, JNI_CreateJavaVM return -1 and does not work.

会出现什么问题?

这是一个创建JVM的函数:

Here is a function that create JVM:

#elif __linux HRESULT PWNJava::InitJVM(void) { if(m_bRunning) { Log("Error : JVM is already Running! (PWNJava::Init)"); return PWN_FAIL; } const int kNumOptions = 3; JavaVMOption options[kNumOptions] = { { const_cast<char*> ("-Xmx128m"), NULL}, { const_cast<char*> ("-verbose:gc"), NULL}, { const_cast<char*> ("-Djava.class.path=../../Class"), NULL} }; JavaVMInitArgs vm_args; vm_args.version = JNI_VERSION_1_6; vm_args.options = options; vm_args.nOptions = sizeof (options) / sizeof (JavaVMOption); assert(vm_args.nOptions == kNumOptions); int res = JNI_CreateJavaVM(&jvm, reinterpret_cast<void**> (&env), &vm_args); if (res != JNI_OK) { Log("Error : createJavaVM(&jvm, &env, &vm_args)"); return PWN_FAIL; } m_bRunning = true; Log("Success : PWNJava::Init"); return PWN_OK; } #endif

这是一个删除JVM的函数:

Here is a function deleting JVM:

void PWNJava::ReleaseJVM(void) { if (jvm) jvm->DestroyJavaVM(); jvm = NULL; delete jvm; env = NULL; delete env; m_bRunning = false; Log("Success : PWNJava::ReleaseJVM"); }

推荐答案

上次我看了 JNI_DestroyJVM(),它说但JDK / JRE仍然不支持VM卸载。只是不要调用它,也不要重新初始化它。

Last time I looked at JNI_DestroyJVM(), it said "The JDK/JRE still does not support VM unloading, however." Just don't call it, and don't re-initialize it either.

更多推荐

在调用DestroyJavaVM之后,重新调用JNI

本文发布于:2023-11-11 18:09:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1579191.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:DestroyJavaVM   JNI

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!