1. 程式人生 > >ubuntu14.04,Matlab呼叫java程式碼

ubuntu14.04,Matlab呼叫java程式碼

利用一週的閒碎時間折騰matlab呼叫java,一直沒能成功,無意間瀏覽到一個部落格《【總結】Matlab呼叫Java程式碼》,按照其方法試了一下,一下子就搞定。

注意事項:matlab裡的jdk版本需要跟編譯java的jdk版本一致或高於java的jdk版本,不然會出現不相容的問題。(因為這個問題浪費了我很多時間。。)

主要步驟:

  1. 需要安裝好matlab和java的執行環境。我的是matlab 2014a,jdk7,用eclipse作為IDE。
    檢視自己系統中的jdk版本和matlab中的jdk版本的方法:
    在matlab中輸入version('-java')檢視matlab中jdk版本
    可以開啟cmd,輸入java -version
    檢視系統的jdk版本
  2. 建立一個Java專案叫test_helloWorld
  3. 建立HelloWorld類
package com.test_helloWorld;

public class HelloWorld {
	public void hello(){
        System.out.println("Hello world");
    }
}
  1. 匯出java專案為JAR file格式:test_helloWorld.jar
  2. 新增java檔案路徑
    (1)靜態方法:
    在matlab中輸入以下程式碼找到classpath檔案:
 edit classpath.txt 

在classpath.txt 檔案裡新增之前匯出的jar路徑(這裡需要是相對路徑):\【存放的資料夾路徑】\test_helloWorld.jar
例如, test_helloWorld.jar存放的路徑是 \home\matlab_java, 則新增路徑:
\home\matlab_java\test_helloWorld.jar
(2)動態路徑(每次重啟matlab需要重新新增路徑):用javaaddpath()函式實現

javaaddpath('\【存放的資料夾路徑】\matlab_test.jar ')

Ps.
使用javarmpath可以移除動態新增的路徑;
使用clear java

可以從記憶體中移除所有變數,函式,mex檔案和動態java類定義,使得整個工作空間(workspacae)為空。

  1. 在matlab命令列裡輸入以下程式碼
import com.test_helloWorld.HelloWorld
test = HelloWorld;
test.hello()

成功顯示:Hello World

一點小tips:
關於之前說到的版本不相容問題,我最近找到了一個解決方法,可以讓matlab相容jdk8編譯的jar檔案。那就是在啟動matlab之前,先設定好matlab使用的jdk版本,通過以下命令實現:

env MATLAB_JAVA=/usr/lib/jvm/java-8-oracle/jre matlab

具體方法為:
(1) 先安裝好jdk 8或jre 8,具體下載連結為:jdk 8
或者直接通過以下命令安裝:
sudo apt install openjdk-8-jdk
(2) 確定jdk 8 的安裝路徑"[filepath]"。我的是安裝在/usr/lib/jvm/java-8-oracle
(3) 然後在shell中輸入

env MATLAB_JAVA=[filepath]/jre matlab

啟動matlab即可。
(4) 檢測matlab相容的jdk版本的方法:在matlab的命令列裡輸入:
version -java
顯示資訊為:

>> version -java
ans =
Java 1.8.0_191-b12 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode