64位 JDK 1.8 調用Matlab 2017b打包的jar


DK寫在前面:

寫這篇文章的主要目的是記錄一次java調用matlab 打包的jar過程,也參考了很多網上的文章,因為步驟雷同,所以其中一些截圖就引用網上的了,以備將來查閱。

文章分為2大部分,一是matlab環境和打包步驟的介紹,二是在安裝有matlab和沒有安裝matlab的機器上,調用和運行matlab打包的 jar 方法。

 

第一部分:

matlab環境安裝和打包jar文件:

本次試驗所用的軟件及版本為:matlab 2017b, jkd 1.8;

1、matlab 2017b和jdk 1.8的安裝配置步驟,不在贅述。

2、腳本編寫和打包jar

2.1 打開matlab主程序,顯示matlab主頁面,在左側是matlab當前文件夾目錄,中間為命令窗口,右邊是工作空間,如圖:

可以點擊左側當前文件夾窗口上方的圖標,更改matlab當前文件夾;

2.2 新建 .m 擴展名的腳本文件

新建腳本有兩種方式,一是直接點擊ribbon界面菜單欄的新建按鈕,在下拉列表中,選擇腳本;二是在左側當前文件夾目錄樹中,右鍵,選擇新建腳本命令,兩種方式是一樣的。

2.3 編寫函數

雙擊打開新建的腳本文件,再輸入腳本,在此試驗借用了網上的一小段代碼,“短小精悍”,就拿來主義了。

%畫圖 自定義函數drawplot 參數 x y 
   function drawplot(x, y) 
    plot(x, y); %%使用matlab函數plot()作圖
    grid on %網格顯示
    xlabel('X軸值')
    ylabel('Y軸值')
    title('Java調用MatLab作圖例子') 

 

直接將以上代碼復制粘貼到腳本文件中;

2.4 打包jar

在命令窗口中輸入deploytool(可在輸入幾個字母后,按tab鍵,有代碼提示),彈出Matlab Compiler窗口:

 

選擇 Library Compiler ,彈出如下窗口:

 按圖中標注的數字順序依次選擇和輸入jar包名稱、類名和選擇腳本文件,最后單擊 package按鈕,在彈出的保存工程窗口選擇保存位置和填寫工程名稱,打包成功截圖如下:

2.5 打包成功之后,會生成下圖所示的幾個文件夾,具體每個文件夾的作用,沒有深究,我們只需從下圖 for_testing 文件夾,找到我們需要的在上2.3步驟中命名的 jar 包即可。

到此,matlab將腳本文件打包成可被 java 調用的 jar 的步驟已經完成。

 

第二部分:

該部分分為2種情況下調用方式:一是在安裝有相應版本的 matlab 軟件的機器上調用 ,二是在安裝matlab compiler runtime (簡稱 mcr,下文所提到的 mcr,都指該軟件) 的機器上調用。

准備所需的 jar:除了在上一部分提到的 matlab 打包生成的 jar 之外 ,還需要在 matlab 安裝目錄下的 javabuilder.jar,其所在位置如下圖(本機安裝目錄是 c:/Program Files/MATLAB):

(注意:無論是否在安裝 matlab 的機器上調用 matlab 所打包的 jar,都要保證 jdk 版本與位數與 matlab 所要求的一致)

 

一:在安裝了相應版本的 matlab 軟件的機器上調用打包的 jar  :

1、在安裝了相應版本的 matlab 機器上調用打包的 jar 時,一般情況下,不需要再配置 matlab 環境,因為我們在安裝時,軟件自動在環境變量 Path 下配置了相關配置,我們只需要檢查一下,是否存在相關配置即可,如果沒有 matlab 配置,手動添加即可:

配置為:

C:\Program Files\MATLAB\R2017b\runtime\win64;

C:\Program Files\MATLAB\R2017b\bin;

這兩個配置還有順序要求,runtime要在前(根據看到的其他文章中說明,猜測的,沒有實際測試)。

2、 java 工程調用

在 myeclipse 中新建 java 工程,將在本部分提到的2個jar包添加到工程引用,並將以下代碼寫在測試類的 main 方法中,下面的代碼中的類名與文章第一部分打包截圖有所不一致,讀者在按以下代碼運行時,應根據代碼后面的注釋,修改為實際 jar 包中的類名和方法名。

public static void main(String[] args) {
		MWNumericArray x = null; // 存放x值的數組
		MWNumericArray y = null; // 存放y值的數組
		plotter plot = null; // 自定義plotter實例,即打包時所指定的類名,根據實際情況更改
		
		int n = 20;//做圖點數
		try {
			int[] dims = {1, n};
			x = MWNumericArray.newInstance(dims, MWClassID.DOUBLE, MWComplexity.REAL);
			y  = MWNumericArray.newInstance(dims, MWClassID.DOUBLE, MWComplexity.REAL);
			
			//定義 y = x^2
			for(int i = 1; i <= n; i++) {
				x.set(i, i);
				y.set(i, Math.pow(i, 2));
			}
			
			//初始化plotter
			plot = new plotter();
			
			//做圖
			plot.drawplot(x, y);// 在腳本文件中的函數名,根據實際情更改
			plot.waitForFigures();// 不調用該句,無法彈出繪制圖形窗口
			
		} catch (Exception e) {
			// TODO: handle exception
		} finally {
			MWArray.disposeArray(x);
			MWArray.disposeArray(y);
			if(plot != null) {
				plot.dispose();
			}
		}
         
}

代碼運行成功,即彈出如下窗口:

 

二:在未安裝 matlab軟件,但安裝了 mcr 的機器上調用打包的 jar:

 在沒有安裝相應版本的 matlab 機器上調用 matlab jar時,應當安裝 mcr 環境。

1、安裝 mcr

獲取 mcr 安裝包有兩種途徑,

(1)從 matlab 官網下載對應版本的 mcr。

本次測試所用的 matlab 軟件為 2017b版,故在官網(https://cn.mathworks.com/products/compiler/matlab-runtime.html)下載了如下版本的安裝包:

在下載完成后得到以MCR_R2017b_win64_installer.exe命名的安裝文件,在安裝之前,要先解壓所下載的文件,雖然是以 exe 結尾的文件,但仍然可解壓,如果不解壓,在安裝過程中可能會出現問題(親測)。

安裝完成后會,會將 C:\Program Files\MATLAB\MATLAB Runtime\v93\runtime\win64 添加到 Path 環境變量中,如果沒有,需要添加該配置。

 

(2)從已安裝 matlab 的目錄下拷貝;其所在的目錄為:(該種安裝方式未測試)

 %matlab安裝目錄%\R2017b\toolbox\compiler\deploy\win64

 

找到該文件后,在安裝之前,應當先解壓該該文件(雖然是以.exe結尾的文件,但仍然可解壓,如果不解壓,安裝過程中有可能出現問題)

安裝完成后會,會將 C:\Program Files\MATLAB\MATLAB Runtime\v93\runtime\win64 添加到 Path 環境變量中,如果沒有,需要添加該配置。

 2、java 調用

該部分與第一部分中的java調用相同,同樣出現上文出現的繪圖結果窗口。

 

 至此,完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM