2011-04-10 44 views
1

當我點擊名爲GetSummary的Jbutton時,執行程序時出現問題。當我點擊按鈕名稱GetSumamry時,我想要執行MainApp.java文件。有人可以告訴我,我應該在actionPerformed函數中編寫哪些代碼來運行此程序?如何使用Swings執行MainApp.java程序?

在此先感謝。

回答

5

由於主方法簽名

public static void main (String [] args) 

你怎麼稱呼它像所有其他靜態方法:

String [] dummy = new String [0](); 

,如果你不帶參數,空數組,

MainApp.main (dummy); 

返回void,因此沒有賦值,並且由類調用,不帶引用(new MainApp.main)。

1

您需要首先編譯MainApp.java。然後:

String[] cmd = {"java", "MainApp"}; 
Process p = Runtime.getRuntime().exec(cmd); 
如果要等待進程結束

p.waitFor(); 
+1

你必須處理IOException異常,如果你使用p.waitFor一個InterruptedException,並處理運行時的通常陷阱.getRuntime http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html? 。在某些情況下,您可能需要這樣做,包括帶有自己ClassLoader的JVM(因此某些Singletons不會是單一的),但在大多數情況下,您不需要第二個JVM。 – 2011-04-10 13:43:11

+0

爲了清楚起見,我省略了異常處理,IDE將爲此生成代碼。我明白,OP想要產生一個單獨的進程而不只是執行一個方法。 – pajton 2011-04-10 20:26:43

+0

一個新的非阻塞程序可以用main方法啓動,但是運行在同一個JVM中。這樣可以節省內存,因爲它共享資源,併爲單例模式和「System.exit」的天真使用帶來有趣的後果,如果不採取反方法,則會終止兩個程序。 (如果源可用:'setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);'而不是EXIT)。 – 2011-04-10 22:47:47