2015-11-24 101 views
4

我正在開發一個項目,我希望在Matlab中調用Java程序。 Java程序的示例結構如下:在MATLAB中調用java類文件(使用jar文件和其他類文件)

    mainproj 
       / | \ 
       src lib bin 
      /\  /\ 
       a b  ac bd 

文件夾「lib」包含jar文件。文件夾ac和bd有java的類。文件夾a和b有java文件+其他一些類文件。我希望在文件夾a下運行一個名爲「launcher.java」的java文件,它使用jar文件並調用文件夾b中的java程序,文件夾ac中有launcher.class文件。

我很困惑如何成功地調用這個程序。我在網上發現了一些解決方案,但他們不適合我。 Calling Java from MATLAB?, Calling Java from MATLAB,Is it worth to call java from matlab?,Calling Java from Matlab is very slow

的launcher.java文件如下:

package ac; 
import.... 
public class launcher 
{ 
.... 
.... 
public static void main(String[] args) { run();} 
public static void run() {......} 
} 

我進行什麼如下:

javaaddpath('mainproj\lib\x.jar') 
javaaddpath('mainproj\bin\ac') 
import mainproj.*; 
import mainproj.lib.*; 
import mainproj.bin.*; 
import mainproj.bin.ac.*; 
import mainproj.bin.bd.*; 

l = launcher; 
javaMethod('main', l); 

[我要叫主launcher.class的文件夾中自動調用run()方法和run()調用文件夾bd中的其他類文件]

我得到的輸出錯誤是:No class launcher can be located or no methods for class

任何建議/幫助表示讚賞。

+0

您是否驗證過,您可以直接從命令行運行Java程序,在相同的目錄中以及您希望Matlab使用的相同設置? – dimo414

+0

@ dimo14是啊!我已經檢查過這一切。我在一個目錄中檢查了一個簡單的程序,正在工作,但上面提到的不起作用。 – user24094

+0

您可以將您運行的命令行添加到您的問題中嗎?我有一個理論,但需要知道如何成功地運行它。 – dimo414

回答

0

如果您提供了具體細節,而不是聲稱它在Eclipse中有效,那將會非常有幫助。顯然東西在你的Eclipse設置和你的Matlab代碼中是不同的,但是如果你不共享你的工作設置,我們只能猜測你的Matlab設置有什麼問題。

以下是我的猜測;如果出錯,請包含用於構建和運行Java代碼的確切命令。如果您不能通過命令行執行此操作,請包括確切的 Eclipse構建路徑和運行配置。


您正在將mainproj\bin\ac添加到Java類路徑中。這告訴Java將mainproj\bin\ac作爲類文件的根目錄。由於您正在嘗試啓動類ac.launcher,因此應在ac軟件包目錄內部有一個launcher.class文件,其中將該目錄添加到Java類路徑中。

換句話說,如果你的java命令是這樣的:

java -cp mainproj\bin\ac ac.launcher 

Java將尋找一個mainproj\bin\ac\ac\launcher.class文件。

更有可能的是你的launcher.class文件位於mainproj\bin\ac(因爲ac是包)等mainproj\bin應該是目錄添加到Java類路徑,因此命令看起來是這樣的:

java -cp mainproj\bin ac.launcher 

這將加載一個mainproj\bin\ac\launcher.class文件。

TL;博士嘗試用javaaddpath('mainproj\bin')更換javaaddpath('mainproj\bin\ac')how the Java class path works閱讀起來。