gpt4 book ai didi

从 Java 调用时,Matlab 在库初始化时崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:53 24 4
gpt4 key购买 nike

我的设置是使用 Java 应用程序通过 JNI 调用 native C 代码,这反过来启动 MATLAB 运行时并调用其上的函数(我知道还有其他解决方案可以从 Java 调用 MATLAB 方法).

问题是 MATLAB 引擎在初始化过程中的某个时刻崩溃了,我不知道到底是什么原因导致的。崩溃导致我的 jvm 终止,我认为这是某种内存损坏。

实际崩溃的调用 MATLAB 函数的 C++ 代码是

JNIEXPORT void JNICALL 
some_jni_vodoo_initializeLibrary(JNIEnv* env, jclass thisClass) {
try {
if (!mclInitializeApplication(NULL, 0)) {
THROW_EXCEPTION(env, "Could not initialize the application properly.");
return;
}
if (!<library>Initialize()) {
THROW_EXCEPTION(env, "Could not initialize the library.");
return;
}
} ...

函数<library>Initialize()在这里崩溃,Java错误日志显示

Stack Trace:
[0] jmi.dll:0x793f4175(0x7934cdca, 1, 0x7937e67c "à;.y`E.y@E.ychar in C:\BUILD_ARE..", 0x792d6a32)
[1] jvm.dll:0x792df9a5(0xc0000005, 0x79356791, 0x4961b400 "Ð\8y", 0x6d8b29de)
[2] jvm.dll:0x792e0431(0x8b515008, 0x70f0e8ce, 0x8b5ffffa, 0xc25d5ec6)

------------------------------------------------------------------------
Fatal Java Exception detected at Fri Apr 30 11:08:08 2010
------------------------------------------------------------------------

Configuration:
MATLAB Version: 7.8.0.347 (R2009a)
MATLAB License: unknown
Operating System: Microsoft Windows Vista
Window System: Version 6.0 (Build 6002: Service Pack 2)
Processor ID: x86 Family 6 Model 10 Stepping 5, GenuineIntel
Virtual Machine: Java is not enabled
Default Encoding: windows-1252

Java is not enabled

我真的不知道哪里出了问题。 jvm 内存不足吗?我猜这个问题在某种程度上与 Java 有关,因为从一个简单的测试 C++ 程序调用 JNI 函数工作正常......

谢谢

最佳答案

初步想法

我见过的唯一类似的事情是由于许可证无效而从 MATLAB 静默退出。

另一种可能性是嵌套的 Java 环境。由于 MATLAB 需要自己的 Java 环境,因此这里可能存在一些问题。 编辑:见下文!

您正在运行 MATLAB 引擎吗?或者您是否使用某些“系统”或“exec”调用来调用单独的 MATLAB 命令?这可能会提供一个很好的线索。


回答

答案出现在下面的评论中。为了便于阅读,将其复制到这里:

当在具有自己的 JVM 的进程中嵌套调用 MATLAB 引擎时,您必须通过传递 -nojvm 告诉 MATLAB 在没有 JVM 的情况下运行。至 mclInitializeApplication或者通过设置全局 MATLAB_JAVA 告诉它使用哪个 JVM到您希望使用的 JVM 的位置,C:\Program Files\Java\jre6例如。

第一个选项将禁用 MATLAB 中需要 JVM 的任何功能,因此第二个选项更可取。

关于从 Java 调用时,Matlab 在库初始化时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2743566/

24 4 0
文章推荐: javascript - 如何将一个