我正在一个服务器中部署一个Java EE项目,该服务器使用Matlab的MCR执行一些图像处理功能。我已经试了好几个月了,我无法使它发挥作用。问题是,当它要使用MCR时,它找不到.so库。我得到了这个错误:
javax.servlet.ServletException:在java.library.path上找不到MATLAB构建器JA所需的库libmwmclmcrrt.so.7.13。此库通常与MATLAB或MCR一起安装,它的缺失可能表明该安装或当前路径配置存在问题。该组件尝试使用的MCR版本为7.13。
根本原因:
java.lang.UnsisfiedLinkError:在java.library.path上找不到MATLAB Builder JA所需的库libmwmclmcrrt.so.7.13。此库通常与MATLAB或MCR一起安装,它的缺失可能表明该安装或当前路径配置存在问题。该组件尝试使用的MCR版本为:7.13。
服务器使用:
- Ubutuntu 64位
- Netbeans 7.4
- 玻璃鱼
- java 6 sdk
- 首先使用MCR 7.13,现在使用MCR 8.1
我已经尝试过的东西:
- 使用导出设置环境变量LD_LIBRARY_PATH和XAPPLERSDIR:
出口LD_LIBRARY_PATH=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/Runtime/glnxa64:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/bin/glnxa64:/usr\local/MATLAB/MATLAB-Compiler_Rountime/v81/sys/os/glnxa64:/usr/local/MMATLAB/MATLAB_Compiler_Runtime/v81/sys/java/jre/glnxa64-jre/lib/amd64/nature_threads:/usr/sys/java/jre/glnxa64/jre/lib/aamd64/server:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/sys/java/jre/glnxa64/jre/lib/amd64:$LD_LIBRARY_PATH
export XAPPLRESDIR=/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/X11/app-defaults
- 使用setenv设置环境变量LD_LIBRARY_PATH和XAPPLERSDIR:
未找到命令setenv
- 编辑ld.so.conf文件并运行ldconfig
- 在glassfish中添加-Djava.library.path=my/path/to/so
- 在Netbeans中添加-Djava.library.path=my/path/to/so,如下所示:给出';java.library.path';在用于.dll/.so文件的netbeans中
- 我试着在Netbeans中设置环境变量,就像在这篇文章中所说的:如何在Netbeans中设置environment Variable?但我找不到";Actions"
- 我试着在Netbeans中设置环境变量,就像在这篇文章中所说的:https://askubuntu.com/questions/267071/ld-library-path-specification但我找不到";"环境"
我已经尝试了很多我记不清的东西,但都不起作用,它一直显示相同的错误(现在是8.1版,而不是7.13版)。如果有任何帮助,我将不胜感激。
我在使用Linux、Java EE和Matlab时也遇到了同样的问题。我的解决方案是:
- 打开终端
- 以根
$ su
身份登录并键入密码 - 编辑/etc/environment
$ gedit /etc/enviroment
- 在我们的案例中,添加所需的变量:
LD_LIBRARY_PATH="//usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/Runtime/glnxa64:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/bin/glnxa64:/usr\local/MATAB/MATLAB-Compiler_Rountime/v81/sys/os/glnxa64:/usr/local/MMATLAB/MATLAB_Compiler_Runtime/v81/sys/java/jre/glnxa64.jre/amd64/native_threads:/usr/local/MATMATLAB_Compiller_Runtime/v81/sys/jaw/jre/gl nxa64/jre/lib/aamd64/server:/usr/local/MATLAB/MATLAB_Compiler_Runtime/v81/sys/java/jre/glnxa64/jre/lib/amd64";
XAPPLRESDIR="//usr/local/MATLAB/MATLAB_ Compiler_;
- 保存文件并重新启动
- 以root身份启动服务器
其他解决方案(如导出)的问题是,您创建的变量和GlassFish服务器之间没有可见性。在环境中设置变量将测量它们在任何其他程序/过程中是否可见。