使用工具:matlab2018b,jdk:1.8 ,eclipse
1,查看环境
查看matlab环境:在matlab命令行输入: version -java
查看本机jdk环境:在cmd下输入: java -version
必须保证两处的jdk环境是相同的1.8。因为尝试了很多个版本的matlab,特此把我试过的matlab中的java版本列出,供参考。
matlab2016b中是:1.7.0_60_b19;
matlab2018b中是:1.8.0_152_b16;
matlab2019a中是:1.8.0_181_b13; 2017不太清楚,应该是从2017开始是jdk1.8的。
环境配置问题可以参考这篇博客:https://www.runoob.com/java/java-environment-setup.html
2,matlab程序打包
强调:不是单一的.m文件也可以,就是允许程序中存在相互调用,我的代码中就存在调用其他的.m文件,不影响的。
在命令行输入: deploytool选择“Library Compiler ”,
选择java package,导入.m文件,然后可以编辑Class Name,Method Name 不能更改,最后选择package。
记住自己的Class Name和Method Name,稍后要用。
然后就等着三个小对勾出现,就可以了。如果没有出现,一般都是环境的问题,再返回去看环境配置。成功后,主要利用的是:Test.jar.
3,java使用jar包
首先建立一个java project,工程文件夹右键——>Build Path——>Config Build Path——>Libraries——>Add Externel JARs——选择jar包所在路径——>确定。
这块除了上面的Test.jar的之外,还要增加一个matlab里面的javabuilder.jar。因为是matlab打包的jar包,需要依赖matlab中的相关函数,所以要将javabuilder.jar包带上,路径:E:\matlab\toolbox\javabuilder\jar中。
完成之后就会有两个这样的包,在旁边。
然后java代码如下:
import com.mathworks.toolbox.javabuilder.MWException;
import Test.test;
public class J {
public static void main(String[] args) {
try {
test j_test = new test();
String str="C:\\Users\\happy\\Desktop\\J\\88888-20191121-095717.xml";
Object[] a = j_test.Test(1,str);
System.out.print("java调用matlab函数运行结果:");
System.out.print(a[0]);
}catch (MWException e) {
e.printStackTrace();
}
}
}
J是在src下建立的class,然后import的是Test.jar包中的class test。然后要new这个类,调用类里面的函数Test()。str是我函数需要的参数。
最后将结果打印。
这块主要参考: