2010-10-07 89 views
0

我的問題是如何使用exec()或ProcessBuilder類在目錄中運行.class java文件。這隻適用於.class文件與java程序位於同一目錄中的情況。如何運行在另一個目錄中的.class文件

+1

你認爲比使用exec()更簡單的選擇嗎?例如。將該類添加到類路徑中,並只導入/調用它通常的Java方式? – BalusC 2010-10-07 15:19:56

回答

0

你想產卵一個全新的過程?那麼你應該使用

Runtime.getRuntime().exec(new String[] {"java","-cp","/path/to/classes/dir/","com.foo.MyClass"}); 

如果你想在同一進程中的東西,你可以創建一個新的ClassLoader它知道如何加載你的.class文件。然後,您可以使用反射從類加載器中獲取類對象,並調用其「main」方法或類似的東西。您將需要使用反射,因爲該類在默認類加載器中不可用。

+0

我遺漏了exec的一些參數,即用於設置類路徑的-cp(如果除了單個類文件外,還需要其他任何東西) – 2010-10-07 15:35:05

+0

Java不是以這種方式啓動的。你需要給類路徑的絕對路徑,然後給出完全合格的類名稱。 Java不提供類文件。 – 2010-10-07 15:37:08

+0

感謝馬克,更新我的例子 – 2010-10-08 03:39:48

0

問題解決了,大家好感謝您的答覆... :)

解決方案我已經使用

字符串路徑= 「d:\工作」; //我的程序執行的路徑

String program =「Test」; //我的程序名稱

ProcessBuilder pb = new ProcessBuilder(「java」,「 - classpath」,path,program);

+3

如果您曾回到網站,您應該接受自己的答案。 – 2011-08-20 20:50:38

相關問題