首先,我要先感谢大家阅读了这么长的文章。非常感谢您的帮助。
事实是,我一直在为我正在大学上的项目进行一些有关如何“连接” Matlab和Java的研究。我认为最合适的选择是使用Matlab Builder JA,但是我遇到了很多麻烦。
我逐步按照教程(下面的视频链接)中描述的说明进行操作,但是一遍又一遍地遇到编译错误,而且我真的不知道如何解决。本教程介绍如何使用MATLAB(“com.demo”)创建Java包(demo.jar),其中包含一个类(MLTestClass),该类带有函数makeSqr(n)
,该函数返回n×n方阵。然后转到Eclipse,将javabuilder.jar和demo.jar库都添加到项目中,然后创建以下类:
public class Driver {
public static void main (String[] args) {
MLTestClass x = null;
Object result [] = null;
try {
x = new MLTestClass ();
result = x.makeSqr (1, 5);
System.out.println (result [0]);
} catch (MWException e) {
e.printStackTrace();
}
}
}
当然,我导入com.demo。*和com.mathworks.toolbox.javabuilder。*。
这是控制台给我的错误:
线程“主”中的异常java.lang.ExceptionInInitializerError
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getProxyLibraryDir(MCRConfiguration.java:163)
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration $ MCRRoot.get(MCRConfiguration.java:77)
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration $ MCRRoot。(MCRConfiguration.java:87)
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:92)
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration $ ModuleDir。(MCRConfiguration.java:66)
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:71)
在com.mathworks.toolbox.javabuilder.internal.MWMCR。(MWMCR.java:1573)
在com.demo.DemoMCRFactory。(DemoMCRFactory.java:122)
在com.demo.MLTestClass。(MLTestClass.java:63)
在Driver.main(Driver.java:12)
造成原因:java.lang.NullPointerException
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration $ ProxyLibraryDir.get(MCRConfiguration.java:143)
在com.mathworks.toolbox.javabuilder.internal.MCRConfiguration $ ProxyLibraryDir。(MCRConfiguration.java:158)
...还有10个
以防万一,链接教程(视频):http://www.mathworks.nl/products/javabuilder/description2.html
任何人都有任何想法可能是什么问题?它说明了有关NullPointerException的一些信息,但是由于用MATLAB创建的类提供了构造函数,因此我不知道如何解决它。我没有安装MCR的任何问题,而且我有MacOS,我希望这不是问题的根源:)。
再次,很抱歉为您提供长期的帖子,并感谢您的宝贵时间。
本托
最佳答案
是的,请安装MCR。安装中还提到设置环境变量(如LD_LIBRARY_PATH
等)。如果您使用的是eclipse,我建议您更新环境变量
我还必须确保变量
MCR_CACHE_ROOT
指向其他目录,因为我的主目录不够大。