ubuntu14.04,Matlab呼叫java程式碼
利用一週的閒碎時間折騰matlab呼叫java,一直沒能成功,無意間瀏覽到一個部落格《【總結】Matlab呼叫Java程式碼》,按照其方法試了一下,一下子就搞定。
注意事項:matlab裡的jdk版本需要跟編譯java的jdk版本一致或高於java的jdk版本,不然會出現不相容的問題。(因為這個問題浪費了我很多時間。。)
主要步驟:
- 需要安裝好matlab和java的執行環境。我的是matlab 2014a,jdk7,用eclipse作為IDE。
檢視自己系統中的jdk版本和matlab中的jdk版本的方法:
在matlab中輸入version('-java')
檢視matlab中jdk版本
可以開啟cmd,輸入java -version
- 建立一個Java專案叫test_helloWorld
- 建立HelloWorld類
package com.test_helloWorld;
public class HelloWorld {
public void hello(){
System.out.println("Hello world");
}
}
- 匯出java專案為JAR file格式:test_helloWorld.jar
- 新增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
- 在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