如果你羨慕 Matlab 功能的強(qiáng)大、算法的精致矮烹、矩陣運(yùn)算的便捷,又想遷移到別處使用罩锐,該怎么弄奉狈?以下這篇文章簡(jiǎn)單介紹如何從一個(gè) .m 文件生成 jar 文件,并且成功運(yùn)行涩惑。
在這先推薦下 Matlab 版本,老版本推薦 r2008a仁期,較新的版本推薦 r2015a,其他的版本在生成 java 應(yīng)用程序中容易出現(xiàn)各種意想不到的錯(cuò)誤竭恬。
準(zhǔn)備
- 在你的 Matlab 命令窗口輸入 version -java跛蛋,可查看所支持的 JDK 版本
- 再在 Oracle官網(wǎng)下載對(duì)應(yīng)的jdk,配置相應(yīng)的環(huán)境變量
1. 在 Matlab 中痊硕,檢查需要部署為 java 包的 .m 文件
1.1 打開(kāi)需要部署的 .m 文件赊级,在這我建立了一個(gè)可指定生成幾介的隨機(jī)矩陣 makesqr.m 文件
function y = makesqr(x)
y = magic(x);
1.2 在 matlab 的命令窗口上方先進(jìn)入剛建立的 .m 文件目錄,再在命令窗口下輸入 a = makesqr(5),輸出的結(jié)果如下:
a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
2. 打開(kāi) Library Compiler
2.1 在命令窗口 輸入 delpoytool 出現(xiàn) Compiler 窗口
2.2 選擇 Library Compiler
2.3 在窗口上方 Appliction Type 欄中選擇Java Package
2.4 指定要部署的 Matlab 函數(shù)
- 在窗口上方 Exported Functions 欄選擇添加按鈕
- 在文件游覽框中選擇之前創(chuàng)建的 makesqr.m 文件岔绸,
2.5 在窗口上方 Packaging Options 欄中勾上 Runtime downloaded from web
2.6 在窗口右上角點(diǎn)擊 Package
2.7 在新彈出的框中選擇 Open output folder when process completes
2.8 創(chuàng)建完成之后出現(xiàn)以下文件
- for_redistribution — 包含安裝程序軟件包分發(fā)文件夾
- for_testing — 包含原始生成的文件來(lái)創(chuàng)建安裝程序文件夾
- for_redistribution_files_only — 僅包含重新分發(fā)包所需要的文件夾
- PackagingLog.txt — 由編譯器生成的日志文件
2.9 關(guān)閉 Package 窗口
3. 安裝 MCR(Matlab Compiler Runtime)
3.1 MCR一般位于:
MatlabROOT\toolbox\compiler\deploy\win64\MCRInstaller.exe
- 注意 MatlabROOT 為你的Matlab安裝路徑
- 環(huán)境變量 CLASSPATH也要加入 javabuilder理逊,其位置位于:
matlabROOT\toolbox\javabuilder\jar\javabuilder.jar- 注意:matlabROOT 為你 matlab 安裝目錄
3.2 依次點(diǎn)擊安裝即可橡伞,一定記住安裝位置
4. 打開(kāi) for_testing 文件夾
4.1 這里有 .m 文件生成的 jar 文件,創(chuàng)建一個(gè)新的文件命名為 getmagic.java
4.2 利用文本編輯器打開(kāi) getmagic.java 文件
4.3 將一下的 java 代碼復(fù)制到 getmagic.java 文件中晋被,保存
5. 編譯骑歹、運(yùn)行應(yīng)用
5.1 打開(kāi) cmd 命令,進(jìn)入到 for_testing 文件夾
5.2 編譯:
javac -
classpath"mcrROOT\toolbox\javabuilder\jar\javabuilder.jar";.\makesqr.jar .\getmagic.java
- 注意 mcrROOT 為你安裝 MCR 的目錄
5.3 運(yùn)行:
java -
classpath.;"mcrROOT\toolbox\javabuilder\jar\javabuilder.jar";.\makesqr.jar getmagic 5
- 注意 mcrROOT 為你安裝 MCR 的目錄