从Java启动外部应用程序,并且不将其与虚拟机绑定

3
有时我大型的Java应用程序需要启动外部程序。 我可以通过以下代码很容易地实现: Runtime.getRuntime().exec("程序名称");
问题是,所启动的程序似乎与我的Java进程绑定,因此当我的Java应用程序退出时,它将被终止。 我希望保持其他程序运行。
编辑:上面的描述有误。 启动的程序不会被终止。
问题在于,当我的原始应用程序退出后,除非启动的应用程序终止,否则我不能再次启动原始应用程序。 原始应用程序(和启动的应用程序)都是由Launch4J生成的.exe文件。
那么,如何避免启动的应用程序阻止原始应用程序完全退出呢?
(哦,再扔一个猴子扳手进去,启动的应用程序使用32位JVM,而原始应用程序在64位JVM中运行。)
2个回答

2

虽然使用shell命令可能有效,但我发现有一种更简单的方法。

Desktop.getDesktop().open("应用程序名称");

显然,这将以一种不与原始程序绑定的方式启动该应用程序。


这具有一个关键优势,即不特定于系统。 - Richard Tingle

0

一个可行的方法是通过运行一个启动你的程序为独立进程的 shell 命令。

例如在 Linux 上(基于 this answer):

Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", "nohup app_name &"});

在Windows上:

Runtime.getRuntime().exec(new String[] {"cmd.exe", "/c", "start app_name"});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接