Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab + Java:尝试使用javabuilder时出现java.lang.ExceptionInInitializerError

我一直在尝试在Windows XP下使用Matlab的javabuilder包,但是在尝试实例化任何javabuilder类时却遇到了一个奇怪的错误。为了说明问题,我创建了一个简单的程序,该程序打印MCRROOT和PATH系统变量(以检查它们是否设置正确)并尝试创建MWCharArray:

import com.mathworks.toolbox.javabuilder.*; import com.mathworks.toolbox.javabuilder.internal.MCRConfiguration; class Main { public static void main(String[] args) { System.out.println("MCRROOT: " + System.getenv("MCRROOT")); System.out.println("PATH: " + System.getenv("PATH")); System.out.println(MCRConfiguration.isInstalledMCR()); MWCharArray test = new MWCharArray("Test"); } } 当我执行程序时,输出为:

MCRROOT: C:\Program files\MATLAB\MATLAB Compiler Runtime\v710 PATH: C:\Program files\CollabNet Subversion Client;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program files\MATLAB\MATLAB Compiler Runtime\v710 false Exception in thread "main" java.lang.ExceptionInInitializerError at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:77) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ModuleDir.(MCRConfiguration.java:51) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:56) at com.mathworks.toolbox.javabuilder.internal.MWMCR.(MWMCR.java:1447) at com.mathworks.toolbox.javabuilder.MWUtil.GetUnknownClassID(MWUtil.java:1258) at com.mathworks.toolbox.javabuilder.MWClassID.(MWClassID.java:41) at com.mathworks.toolbox.javabuilder.MWCharArray.(MWCharArray.java:75) at Main.main(Main.java:11) Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1937) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.get(MCRConfiguration.java:70) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.(MCRConfiguration.java:72) ... 8 more Java Result: 1 首先,MCRROOT和PATH的值正确吗?我曾尝试使用google来了解如何设置MCRROOT,但结果却存在冲突:有些消息来源说我应该包含de版本dir,而另一些消息则相反。另外,为什么isInstalledMCR方法返回false ?我已经仔细检查了MCR的安装(甚至可以肯定地卸载并安装了MCR),那么为什么磁带库找不到呢?

在此先感谢您的帮助!

编辑:我也尝试设置没有版本字符串的MCRROOT ,它也会失败。



回答:

我已经找到了解决方案,所以我发布了一个自我答案供以后参考:除了将javabuilder.jar添加到程序的类路径中,还必须将MCR运行时库的路径添加到java.library.path JDK中。参数。

我的错误是,我没有将路径设置为MCR安装目录(在我的情况下为C:\MATLAB\MCR\v710\runtime\win32 )中的库路径,而是将运行时目录复制到了项目的dir和改用它。似乎javabuilder库使用java.library.path变量猜测MCROOT ,这将解释奇怪的“ StringIndexOutOfBoundsException”。



更多&回答...
poster 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 03:21


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.