2011-04-10 43 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