2

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

问题是我一直在研究如何为我正在为大学工作的项目“连接”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.<clinit>(MCRConfiguration.java:87)
    在 com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getMCRRoot(MCRConfiguration.java:92)
    在 com.mathworks.toolbox.javabuilder.internal.MCRConfiguration$ModuleDir.<clinit>(MCRConfiguration.java:66)
    在 com.mathworks.toolbox.javabuilder.internal.MCRConfiguration.getModuleDir(MCRConfiguration.java:71)
    在 com.mathworks.toolbox.javabuilder.internal.MWMCR.<clinit>(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.<clinit>(MCRConfiguration.java:158)
    ... 10 更多

以防万一,链接教程(这是视频): http: //www.mathworks.nl/products/javabuilder/description2.html

任何人都有任何想法可能是什么问题?它说了一些关于 NullPointerException 的内容,但我不知道如何解决它,因为构造函数是由用 MATLAB 创建的类提供的。我安装 MCR 没有任何问题,顺便说一下,我有 MacOS,我希望这不是问题的根源:)。

再次,很抱歉,很长的帖子,感谢您的时间。

本托。

4

4 回答 4

2

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

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

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

于 2012-05-22T17:32:05.010 回答
1

您已安装 MCR(可在http://www.mathworks.com/products/compiler/mcr/index.html中获得)

于 2012-05-18T12:13:40.533 回答
0

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

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

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

于 2013-09-11T19:55:38.137 回答
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

于 2016-05-13T10:31:35.047 回答