【发布时间】:2012-11-07 03:18:52
【问题描述】:
我的设置是我使用 Java 应用程序通过 JNI 调用本机 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-native-interface