java.lang.UnsatisfiedLinkError,即使设置了LD_LIBRARY_PATH和-Djava.library.path

时间:2016-08-10 00:47:27

标签: java matlab java-native-interface matlab-compiler

操作系统是Linux Ubuntu 16.04 LTS

(应用程序在Windows上运行完全正常,我没有在安装Matlab Compiler SDK后配置任何内容)

我正在用Java编写一个Web应用程序,它也调用了一些用Matlab编写的函数,需要安装Matlab Compiler SDK,安装完成后,它告诉我将/usr/local/MATLAB/MATLAB_Runtime/v901/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v901/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v901/sys/os/glnxa64:附加到LD_LIBRARY_PATH的末尾。变量,我用

做的
export LD_LIBRARY_PATH=/usr/local/MATLAB/MATLAB_Runtime/v901/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v901/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v901/sys/os/glnxa64:

但是,当我尝试在Netbeans中运行Web应用程序时,为什么会一直收到此错误?

java.lang.UnsatisfiedLinkError: Failed to find the required library libmwmclmcrrt.so.9.0.1 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.

libmwmclmcrrt.so.9.0.1位于/usr/local/MATLAB/MATLAB_Runtime/v901/runtime/glnxa64目录

我还添加-Djava.library.path指向上面的3个目录条目,看它是否有帮助,但它根本没有做任何好事。

我在这里看过几篇帖子,但似乎没有解决它。

  1. JNI: Library is Found on Path, but Method is not (java.lang.UnsatisfiedLinkError)
  2. java.lang.UnsatisfiedLinkError even on setting -Djava.library.path
  3. 我该如何解决这个问题?顺便说一句,这是一个Web应用程序

1 个答案:

答案 0 :(得分:0)

[在Mac OS High Sierra版本10.13.5(17F77)上测试,对于Linux应该相似]

我所做的是在启动应用程序服务器时(在我的情况下为Payara)。我像这样提供了javabuilder.jar的路径

对于Payara Full

asadmin deploy --libraries /path/to/javabuilder.jar app.war

对于Payara Micro

java -jar payara-micro.jar --deploy app.war --addlibs /path/to/javabuilder.jar

注意/path/to/javabuilder.jarjavabuilder.jar在目录MATLAB_HOME/MATLAB_Runtime/SOME_VERSION/toolbox/javabuilder/jar/javabuilder.jar中的位置,将这个javabuilder.jar文件复制出来并引用它会失败,并出现相同的错误。它必须必须才能正常工作。不知道为什么