如何从Java执行完全独立的应用程序。像独立进程
问题描述:
我有一个主要应用程序启动另外两个进程,我只需要启动他们作为一个独立的进程。像运行它们 - 自己而不使用或共享我的主应用程序启动程序进程内存或CPU。如何从Java执行完全独立的应用程序。像独立进程
但是,当我启动它像这样两个其他进程不会被执行(以及他们创建两个新进程,但不是虚构的),除非我杀死主进程。我的计划是在windows下执行它,就像执行THREE应用程序的THREE命令提示符一样。
我该如何解决它,以便三次执行完全独立运行?
/*This is Process 1 itself*/
try {
if (myStock.getOs().equals("Linux"))
{
Runtime.getRuntime().exec("java -cp /var/dist/test.jar main.main");
Runtime.getRuntime().exec("java -cp /var/dist/test.jar www.webserver_starter");
} else {
/*Windows 7 only*/
String WindowsTemp = System.getenv("MY") + "\\";
/*This is Process 2*/
Runtime.getRuntime().exec("java -cp " + WindowsTemp + "dist\\test.jar main.main");
/*This is Process 3*/
Runtime.getRuntime().exec(
"java -cp " + WindowsTemp + "dist\\test.jar www.webserver_starter");
}
} catch(Exception e) {
System.out.println(e);
}
答
对于的Windows使用cmd /c start ...
其中'...'
是你想调用命令。
Runtime.getRuntime().exec("cmd /c start java -cp /var/dist/test.jar main.main")
对于Linux的在命令的末尾添加&
启动一个守护进程。
你也可以使用ProcessBuilder来完成同样的事情。 – Mitch 2012-01-04 15:52:15
@Wojtek O .:我尝试了你刚刚在Windows 7 PC上解释的方式。和我没有'cmd/c start'一样的确切问题' –
YumYumYum
2012-01-04 15:54:25
它正在工作。 'cmd/c start'是我们想要在任务管理器中看到的,也是在任务栏中看到的。如果没有'cmd/c start',它会执行相同的工作,但它会隐藏终端+任务栏,当有人需要启动一个*应用程序并同时启动许多(在我的情况下)。两者似乎都在起作用。非常感谢。 – YumYumYum 2012-01-04 19:14:58