Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我的设置是使用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 (!Initialize()) { THROW_EXCEPTION(env, "Could not initialize the library."); return; } } ...函数Initialize()在此处崩溃,Java错误日志读取 Stack Trace: [0] jmi.dll:0x793f4175(0x7934cdca, 1, 0x7937e67c "脿;.y`[email protected] 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传递给mclInitializeApplication来告诉MATLAB在没有JVM的情况下运行,或者通过将全局MATLAB_JAVA设置为JVM的位置来告知要使用哪个JVM您要使用的C:\Program Files\Java\jre6 ,例如C:\Program Files\Java\jre6 。 第一个选项将禁用需要JVM的MATLAB中的任何功能,因此第二个选项更可取。 更多&回答... |
![]() |
![]() |