从java启动外部应用程序-不要将其绑定到VM

从java启动外部应用程序-不要将其绑定到VM,java,launch,Java,Launch,有时,我的大型Java应用程序需要启动一个外部程序。 我可以很容易地做到这一点 Runtime.getRuntime().exec(“应用程序名称”) 问题是,启动的应用程序似乎与我的Java进程有关,因为它在我的Java应用程序退出时终止。我想让另一个应用程序继续运行 编辑:上述描述有误。 已启动的应用程序不会被终止 问题是,在我原来的应用程序退出后,我无法再次启动它,直到启动的应用程序终止。原始应用程序(和启动的应用程序)都是Launch4J生成的.exe 那么,如何防止已启动的应用程序阻止

有时,我的大型Java应用程序需要启动一个外部程序。 我可以很容易地做到这一点 Runtime.getRuntime().exec(“应用程序名称”)

问题是,启动的应用程序似乎与我的Java进程有关,因为它在我的Java应用程序退出时终止。我想让另一个应用程序继续运行

编辑:上述描述有误。 已启动的应用程序不会被终止

问题是,在我原来的应用程序退出后,我无法再次启动它,直到启动的应用程序终止。原始应用程序(和启动的应用程序)都是Launch4J生成的.exe

那么,如何防止已启动的应用程序阻止完全退出原始应用程序


(哦,再加上一个Monkey扳手,启动的应用程序使用32位JVM,而原始应用程序在64位JVM中运行。)

一种可行的方法是运行shell命令,将程序作为独立进程启动

例如,在Linux上(基于):

Windows上的应用程序:

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

虽然shell命令技巧可能有效,但我确实找到了一种更简单的方法

Desktop.getDesktop()打开(“应用程序名称”)


很明显,它启动应用程序的方式不会与原始程序绑定。

这具有不特定于系统的关键优势
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/c", "start app_name"});