使用Matlab Builder JA的问题

时间:2012-05-14 21:24:46

标签: java matlab compiler-errors matlab-deployment

首先,我要提前感谢大家阅读这么长的帖子。我非常感谢你的帮助。

问题在于我一直在研究如何为我正在为大学工作的项目“连接”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。

4 个答案:

答案 0 :(得分:2)

是的,请安装MCR。安装还提到了设置环境变量,如LD_LIBRARY_PATH等。如果您使用的是eclipse,我建议您更新环境变量

  • 右击 - &gt;
  • 属性 - &gt;
  • 运行/调试设置 - &gt;
  • 环境变量

我还必须确保变量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