2016年9月1日 星期四

Java使用Matlab封裝成的.jar檔(R2015b)

一開始必須要環境準備

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中下指令,看看得到的返回職是否正確,如正確會出現以下對話。
2Classpath
  • 添加matlabInstallRoot \toolbox\javabuilder\jar\javabuilder.jar
3Path
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)

最後你就能看到你的程式碼執行成功了,如下圖

沒有留言:

張貼留言