一開始必須要環境準備
1.設置Java JDK1.7X (不能使用JDK1.8以上的版本,會造成Error during packaging ,可以
參考這篇文章)
2.設置環境變數(可以
參考此文章來設置)
(1)JAVA_HOME (JDK的安裝位置,如C:\Program Files\Java\jdk1.7.0_79)
- 設置後,重啟matlab才有效果。
- 使用getenv JAVA_HOME在Matlab的Command Window中下指令,看看得到的返回職是否正確,如正確會出現以下對話。
(2)Classpath
- 添加matlabInstallRoot \toolbox\javabuilder\jar\javabuilder.jar
(3)Path
- 添加%JAVA_HOME%/bin/javac
此設置環境變數是參考此文章
3.在Matlab Command Window 中下deploytool指令 ,會出現以下圖示|
之後點選Library Compiler,會出現以下圖示,然後在TYPE往下拉找到Java Package
這時候,這邊步驟先到此,因為我們必須先寫一個*.m副程式檔案出來,給Matlab封裝成.jar檔
我們寫的程式碼很簡單如下圖,可以
參考此文章寫出matlab副程式,然後將此檔另存新黨到你想要的目錄底下
然後,我們再回到Library Compiler步驟,我們在藍色筆跡那邊點進去,然後把test.m檔給新增進去
然後輸入Library Nam,我是輸入LibraryTest,之後輸入下方的ClassName,我是輸入CallFunction,這時候可以發現到,我的test.m的方法已經出現在Class Name的旁邊
之後按下右上方的Package等他封裝完成在你Settings所指定的目錄底下就行了
之後會出現檔案目錄出來,之後點選for_testing目錄,可以看到LibraryTest.jar在裡面了
最後我以Intellij IDEA 來展示如何使用封裝後的*.jar檔案
1.先開一個空專案,如下圖
之後同時按下SHIFT+CTRL+ALT+S(window底下)開啟Project structure
有個+號點進去,之後點資料夾找到你的.jar檔所在,新增進去,之後Apply
然後在點+號,再新增一個Matlab會使用到的.jar檔,此檔案在
matlabInstallRoot \toolbox\javabuilder\jar\javabuilder.jar
之後在程式碼加上幾行指令,呼叫.jar檔裡的CallFunction類別,建立出物件(建立實例物件需要花費1~2S時間,不知道為什麼,還沒詳細爬文),然後利用Object陣列變數接收所呼叫的值,這邊需要注意的是CallFunction.test(2,1),第一個參數是指回傳回來的參數個數,第二個是你要傳值給test方法計算的數值,如果你還有更多需要傳值的數值,就繼續寫在後面即可(但必須test方法裡也有符合的參數個數)
此外,你必須加上一個try catch接收Matlab jar有可能引發的錯誤訊息(如:MWException e)
最後你就能看到你的程式碼執行成功了,如下圖