linux下,java项目调用matlab函数

过程描述:

1、win7系统中安装了Matlab R2017a,并参考如何将Matlab代码转换成JAVA可用的Jar包,将自己的Matlab函数打成jar包,并在java工程中成功调用。
2、centos6.7上,编写测试函数:test.java,调用之前在win7环境下已成功调用的Matlab函数jar包,此时遇到:
(1)在Linux下运行引入了外部jar包的java程序的问题

解决方法
主要参考这里,以我自己为例:我的test.java所在目录为 /data1/tmp/Test/src/test.java
a)、我将Matlab函数jar包:cut.jar、javabuilder.jar,与test.java放于同一个目录;
b)、在test.java中引用
import cut.Cut;
import com.mathworks.toolbox.javabuilder.*;

c)、在src目录下,运行命令:
javac -cp /data1/tmp/Test/src/cut.jar:/data1/tmp/Test/src/javabuilder.jar /data1/tmp/Test/src/test.java
(注意使用冒号":"分割)
d)、编译成功,执行 java -cp /data1/tmp/Test/src/cut.jar:/data1/tmp/Test/src/javabuilder.jar:. test
(注意最后添加了一个".",若不加则会报错:“找不到或无法加载主类xxx”,具体原因见这里)

开始运行,出现错误:
(2)failed to find the required library libmwmclmcrrt.so.9.2 on java.library.path

解决方法
a、参考官方教程,在linux下安装Matlab Runtime。(注意静默安装、指定安装路径等相关参数和用法,在该教程中均有说明。)
b、依据安装过程最后的提示,设置环境变量LD_LIBRARY_PATH

3、再次运行,出现错误
(3)无法加载 '/data1/matlab_runtime/v92/bin/glnxa64/libmwosgserver.so'

解决方法
参考这里,增加环境变量LD_PRELOAD
export LD_PRELOAD=/data1/matlab_runtime/v92/bin/glnxa64/libmwosgserver.so(这里'/data1/matlab_runtime'为我的matlab runtime安装路径)

(4)再次运行,成功。

你可能感兴趣的:(linux下,java项目调用matlab函数)