Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.library.path,classpath Netbeans 8.0.2_Java_Matlab_Netbeans_Netbeans 8_Matlab Compiler - Fatal编程技术网

java.library.path,classpath Netbeans 8.0.2

java.library.path,classpath Netbeans 8.0.2,java,matlab,netbeans,netbeans-8,matlab-compiler,Java,Matlab,Netbeans,Netbeans 8,Matlab Compiler,我刚刚将Matlab运行时安装在: Distributor ID: Ubuntu Description: Ubuntu 15.04 Release: 15.04 Codename: vivid 在我的例子中,您可以在已安装的R2015b(9.0)*(针对R2015b的Matlab运行时9.0旨在与Matlab 8.6(也就是R2015b)配合使用)中找到Matlab运行时 Matlab库安装到:/usr/local/Matlab 我正在使用Netbeans 8.0.2 jav

我刚刚将Matlab运行时安装在:

Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:    15.04
Codename:   vivid
在我的例子中,您可以在已安装的R2015b(9.0)*(针对R2015b的Matlab运行时9.0旨在与Matlab 8.6(也就是R2015b)配合使用)中找到Matlab运行时

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:
我已将此行添加到项目>属性>虚拟机选项:

-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:"
我使用:addjar/Folder按钮将相同的文件夹添加到Project>Properties>Libraries

我已在程序中输入以下代码行:

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社区版,没有任何MOD,代码运行时没有任何问题。我真的希望继续使用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

java.library.path
是java用来查找本机库的路径。。如果

  • 路径中没有名为libmwmclmcrt.so的文件
  • 文件的权限libmwmclmcrt.so不正确
因此,我的建议是运行名为libmwmclmcrt.So的搜索,以了解该文件是否在系统中。。 如果找到,您可以手动将其复制粘贴到此路径

/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。选择项目,右键单击属性。选择
Run
选项,更改
VM选项
以添加本机库
-Djava.library.path=“absolute\path\to\your\library\files”

在此之后,您需要通过“System.load”(“absolute\path\to\your\library\files”);”加载库在静态块中

像这样

static {
  try {
    System.load("absolute\path\to\your\library\files");
  } catch (UnsatisfiedLinkError e) {
    System.err.println("Native code library failed to load.\n" + e);
    System.exit(1);
  }
}
还要修改LD_LIBRARY_PATH环境变量,以包括matlab库所在的路径

export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH

我想我们有更好的解释

简言之:

  • 某些系统属性在JVM启动时只读取一次,因此在启动后更改它不会使JVM再次加载它,因此
    system.setProperty()
    将无法工作
  • 特别是,
    java.library.path
    是只读的
因此,设置它的唯一方法是在Windows中设置
%PATH%
,或者在类似Linux的系统中设置
$LD\u LIBRARY\u PATH

要在Linux系统范围内设置它,请编辑
/etc/environment
。如果只想将其设置为用户范围,请选中


另外:如果您不知道,那么在这种情况下,
定位libmwmclmcrt.so.9.0
总是非常有用的,特别是当您可能在不同的位置有不同版本的文件且名称相同时。而
/your/path/to/add
是一个目录

猜测。。。也许您的Netbeans没有
LD\u LIBRARY\u PATH
env变量?尝试关闭netbeans,然后运行导出LD_库路径=/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\u LIBRARY\u PATH
,Mac上的
DYLD\u LIBRARY\u PATH
)。还有一点需要注意的是,文档建议使用与MATLAB相同的Java版本(1.7而不是1.8),包括运行时和JDK。您可以在MATLAB中运行命令
version-java
进行检查。我们也使用MCR,但在Windows系统上使用。默认情况下,系统属性
java.library.path
映射到
path
环境变量。在Linux系统上,我猜是
LD\u LIBRARY\u PATH
。此path变量应包含指向运行时库的directoy。在Windows上,这是
\runtime\win64
。类路径不需要有此目录。它只需要有适当的JAR文件(我们使用
javabuilder.JAR
)。
LD_LIBRARY_PATH="/some/preset/path:/your/path/to/add"