使用工具: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是我函數需要的參數。
最後將結果打印。
這塊主要參考: