【问题标题】:Problems using Matlab Builder JA使用 Matlab Builder JA 的问题
【发布时间】:2012-05-14 21:24:46
【问题描述】:

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

问题是我一直在研究如何为我正在为大学工作的项目“连接”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,我希望这不是问题的根源:)。

再次,很抱歉发了这么长的帖子,感谢您抽出宝贵的时间。

本托。

【问题讨论】:

    标签: java matlab compiler-errors matlab-deployment


    【解决方案1】:

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

    • 右键->
    • 属性->
    • 运行/调试设置->
    • 环境变量

    我还必须确保变量 MCR_CACHE_ROOT 指向不同的目录,因为我的主目录不够大。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        以上解决方案都没有帮助我(我已经安装了 MCR,Mac 使用 DYLD_LIBRARY_PATH 而不是 LD_LIBRARY_PATH),而且网上似乎没有其他人知道。最后在绝望中,我尝试编辑 DYLD_LIBRARY_PATH 并最终通过删除它的最后一部分使其工作:/Applications/MATLAB/MATLAB_Compiler_Runtime/v82/sys/java/jre/maci64/jre/lib

        现在教程中的演示应用程序可以工作了。

        接下来是尝试让我的代码工作。

        【讨论】:

          【解决方案4】:

          运行时部署的 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多