【发布时间】:2016-05-23 00:11:15
【问题描述】:
我刚刚安装了 Matlab 运行时:
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
在我的例子中,您可以在安装的 R2015b (9.0)* 中找到 Matlab 运行时 here(MATLAB 运行时 9.0,对于 R2015b,旨在与 MATLAB 8.6 一起使用,这也是 R2015b)。
Matlab 库安装到:/usr/local/MATLAB
我使用的是 Netbeans 8.0.2
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
我的程序下的错误如下:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Failed to find the required library libmwmclmcrrt.so.9.0 on java.library.path.
This library is typically installed along with MATLAB or the MCR. Its absence may indicate an issue with that installation or the current path configuration.
The MCR version that this component is trying to use is: 9.0.
在安装 Matlab 时,它确实说:
On the target computer, append the following to your LD_LIBRARY_PATH environment variable: /usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64:
我已将此行添加到项目 > 属性 > VM 选项:
-Djava.library.path="/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64:"
我已经使用添加 JAR/文件夹按钮将相同的文件夹添加到项目 > 属性 > 库中。
我已将以下代码行放入我的程序中:
System.out.println(System.getProperty("java.library.path"));
我得到正确的输出为:
/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64:
但是,它仍然无法运行并出现相同的错误。
我安装了 IntelliJ IDEA 社区版,根本没有任何模块,代码运行没有任何问题。我真的很想继续使用 Netbeans 并想了解这个问题。有什么想法吗?
IntelliJ 已加载以下内容:
/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java
-Didea.launcher.port=7532
-Didea.launcher.bin.path=/home/code/idea-IC-143.1821.5/bin
-Dfile.encoding=UTF-8
-classpath /usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/charsets.jar:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/cldrdata.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/dnsns.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/icedtea-sound.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/java-atk-wrapper.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/localedata.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/nashorn.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunec.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunjce_provider.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/sunpkcs11.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/ext/zipfs.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jce.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/jsse.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/management-agent.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/resources.jar
:/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre/lib/rt.jar
:/home/code/NetBeansProjects/CO2model/out/production/TestModelABC
:/home/code/NetBeansProjects/CO2model/TestModelABC/dist/lib/co2model.jar
:/home/code/NetBeansProjects/CO2model/TestModelABC/dist/lib/javabuilder.jar
:/home/code/NetBeansProjects/CO2model/for_redistribution_files_only/co2model.jar
:/home/code/idea-IC-143.1821.5/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain test.Startup
.
:
:/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64
:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64
:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64
:
:/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni
:/lib/x86_64-linux-gnu
:/usr/lib/x86_64-linux-gnu
:/usr/lib/jni
:/lib
:/usr/lib
【问题讨论】:
-
猜测...也许您的 Netbeans 没有
LD_LIBRARY_PATH环境变量?尝试关闭 netbeans,然后运行export LD_LIBRARY_PATH=/usr/local/MATLAB/MATLAB_Runtime/v90/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v90/sys/os/glnxa64: ; netbeans &重新启动它。 -
我认为设置
java.library.path是不够的,它在加载直接本机库时有效,但当这些库引用它们自己的其他本机库时会失败。您还应该设置特定于操作系统的变量以查找共享库(Windows 上为PATH,Linux 上为LD_LIBRARY_PATH,Mac 上为DYLD_LIBRARY_PATH)。 -
还有一点需要注意,文档建议使用与 MATLAB 相同的 Java 版本(1.7 而不是 1.8),包括运行时和 JDK。您可以通过在 MATLAB 中运行命令
version -java来检查。 -
我们也使用 MCR,但在 Windows 系统上。默认情况下,系统属性
java.library.path映射到PATH环境变量。在 Linux 系统上,我猜是LD_LIBRARY_PATH。此路径变量应包含运行时库的目录。在 Windows 上,这是<mcr-dir>\runtime\win64。类路径不需要有这个目录。它只需要有相应的 JAR 文件(我们使用javabuilder.jar)。
标签: java matlab netbeans netbeans-8 matlab-compiler