2012-07-18 66 views
2

我正在開發一個Java庫,需要在Matlab中使用它。 Java和Matlab代碼都在不斷髮展中;因此無論何時重建Java代碼並創建一個新的jar文件,我都需要將它重新加載到Matlab代碼中,並在那裏使用新鮮的jar文件。我的問題是,Matlab鎖定了jar文件,我無法用新的替換舊的jar文件,除非我重新啓動整個Matlab環境。我如何讓Matlab解開我的jar文件?當我嘗試從它調用Java方法時,Matlab鎖定了jar文件

我通過

javaaddpath('path/to/jar/file.jar'); 

訪問Java類和方法同樣在我所說的結尾:

javarmpath('path/to/jar/file.jar'); 

,但它不請解鎖文件。我使用Matlab 7.9.0(R2009b)。

回答

1

我懷疑你不能。 MatLab包含一個JVM,它是鎖定JAR文件的JVM。這樣做是爲了防止在外部修改JAR文件之外的東西時發生JVM發生的令人討厭的事情。

現在如果這是您自己的應用程序,您可以編寫一個自定義類加載器來解決此問題。但我懷疑MatLab會讓你這樣做。

0

您可以動態加載.jar文件,而無需使用ClassPathHacker進行鎖定,如https://stackoverflow.com/a/4380605/2043349中所述。

您可以從https://code.google.com/p/ratrix/source/browse/classes/db/cpath/ClassPathHacker.java?r=8ee84cd195104df02b5e8530190590aff465d914下載jar包。

cpathPath=[hpath,'\Utilities\java\cpath.jar']; 
javaaddpath(cpathPath) 
import cpath.* 
cpath.ClassPathHacker.addFile(jarfile) 

(適應hpath和jar文件到您的需要)

然後用下面的代碼加載文件

相關問題