在Mac上使用mathworks engine API for java的问题

时间:2017-05-13 08:20:40

标签: java macos matlab matlab-engine

我试图在我的Macbook Pro上使用Mathworks MATLAB Engine API for Java。

按照本指南on the mathworks website我已将/extern/engines/java/jar/engine.jar添加到类路径中,并且我还使用了tcsh shell将/ bin / maci64添加到DYLD_LIBRARY_PATH变量。

但是当我尝试运行下面的简单代码时,我收到错误消息;

Mat image = imread("path/to/image");
//center.x and center.y are the location in the screen
cv::Rect roi( cv::Point( center.x, center.y), image.size() );

//if you want to save it in a Mat
image.copyTo( source( roi )); 
//or if you want to write it on a file
imwrite("image.jpg", image);

我在Netbeans和Eclipse中尝试了这个,我得到了同样的错误。这是我尝试运行的代码:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no nativemvm in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at com.mathworks.mvm.MvmImpl.loadLibrary(MvmImpl.java:107)
at com.mathworks.mvm.MvmImpl.setJavaEngineMode(MvmImpl.java:202)
at com.mathworks.engine.MatlabEngine.<clinit>(MatlabEngine.java:69)
at MatlabTest.main(MatlabTest.java:7)

有没有人经历过同样的事情或知道我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

根据您想要达到的目标,有几种“解决方案”。

您遵循的指南允许您更改Terminal执行的shell的环境变量。因此,这些更改只会影响从终端启动的进程(和应用程序)。

解决方案1:运行应用时,您只需要此环境变量。因此,不是在终端中设置环境,而是可以在程序的启动配置中的Eclipse或Netbeans中设置它(在Eclipse中,启动配置中有一个环境选项卡< / em>设置)。

解决方案2(假设您的终端在更改后确实具有DYLD_LIBRARY_PATH的正确env):从终端启动IDE:关闭Eclipse,并使用命令从终端打开它 open -a Eclipse(或open -a "Eclipse blah blah",您需要应用程序的确切名称,如果包含空格则带引号)

以这种方式打开时,Eclipse应该“看到”你的变量。

对于更持久的解决方案,您需要搜索如何在会话级别(或所有用户)设置环境变量,解决方案取决于您运行的操作系统版本(请指定,也许我们可以帮助您找到相关链接。)