首先,我要提前感谢大家阅读这么长的帖子。我非常感谢你的帮助。
问题在于我一直在研究如何为我正在为大学工作的项目“连接”Matlab和Java。我认为最合适的选择是使用Matlab Builder JA,但我遇到了很多麻烦。
我按照教程中描述的指示(下面的视频链接)逐步进行操作,但反复出现编译错误,我真的不知道如何修复它们。本教程是关于使用MATLAB(“com.demo”)创建Java包(demo.jar),其中包含一个带有函数makeSqr(n)
的类(MLTestClass),它返回一个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。*。
以下是控制台给我的错误:
Exception in thread "main" java.lang.ExceptionInInitializerError at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getProxyLibraryDir(MCRConfiguration.java:163) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.get(MCRConfiguration.java:77) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$MCRRoot.<clinit>(MCRConfiguration.java:87) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:92) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ModuleDir.<clinit>(MCRConfiguration.java:66) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:71) at com.mathworks.toolbox.javabuilder.internal.MWMCR.<clinit>(MWMCR.java:1573) at com.demo.DemoMCRFactory.(DemoMCRFactory.java:122) at com.demo.MLTestClass.(MLTestClass.java:63) at Driver.main(Driver.java:12) Caused by: java.lang.NullPointerException at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.get(MCRConfiguration.java:143) at com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ProxyLibraryDir.<clinit>(MCRConfiguration.java:158) ... 10 more
以防万一,链接教程(这是视频):http://www.mathworks.nl/products/javabuilder/description2.html
任何人都有任何想法可能是什么问题?它说了一些关于NullPointerException的内容,但我不知道如何解决它,因为构造函数是由MATLAB创建的类提供的。我没有安装MCR的任何问题,顺便说一下,我有MacOS,我希望不是问题的根源:)。
再次,抱歉这篇长篇文章,谢谢你的时间。
Béntor。
答案 0 :(得分:2)
是的,请安装MCR。安装还提到了设置环境变量,如LD_LIBRARY_PATH
等。如果您使用的是eclipse,我建议您更新环境变量
我还必须确保变量MCR_CACHE_ROOT
指向不同的目录,因为我的主目录不够大。
答案 1 :(得分:1)
答案 2 :(得分:0)
上述解决方案都没有帮助我(我已经安装了MCR,Mac使用DYLD_LIBRARY_PATH而不是LD_LIBRARY_PATH),其他任何人都无法知道。最后,在绝望中,我尝试编辑DYLD_LIBRARY_PATH,最后通过删除它的最后部分使其工作:/ Applications / MATLAB / MATLAB_Compiler_Runtime / v82 / sys / java / jre / maci64 / jre / lib
现在,教程中的演示应用程序正常运行。
接下来试图让我的代码工作。
答案 3 :(得分:0)
运行时部署的OS X路径
使用这些setenv命令设置MATLAB运行时路径。
setenv DYLD_LIBRARY_PATH \
mcr_root/version/runtime/maci64 \
mcr_root/version/bin/maci64 \
mcr_root/version/sys/os/maci64
来源:http://www.mathworks.com/help/compiler_sdk/java/mcr-path-settings-for-run-time-deployment.html