我正在开发一个 C++ 程序(Win32,MS Visual Studio 2008),它通过 JNI 创建一个 Java VM,如此处所述。它在 Java 6 和 Java 7 中都运行良好了很长时间。
今天我安装了新版本的JRE;安装程序出现问题,JRE 损坏。我注意到我的 C++ 程序没有启动并且没有发出任何警告消息。调试程序显示运行成功,直到JNI_CreateJavaVM
调用;但是调用JNI_CreateJavaVM
会导致程序立即终止。没有返回值,没有错误消息,什么都没有。
是的,我知道我只需要重新安装 JRE。但尽管如此,我希望我的 C++ 程序能够为这种情况做好准备。如果它无法创建 Java VM,它应该显示一条消息“请重新安装 JRE”。但我没有机会展示该信息,因为整个程序正在终止。
有没有办法在 JRE 中检测此类错误,或者更一般地说,在第三方库中检测到此类错误?我尝试使用 C++try/catch
构造,我尝试使用信号函数 - 没有任何帮助;程序在没有调用任何 catch 或信号处理程序的情况下消失。
有没有办法检测这种 JRE 崩溃?或者:有没有办法可靠地检测第三方库中的崩溃或终止?