Java如何在独立的进程树中执行batch file

我正在写我的Java应用程序更新机制。 我创build一个Windowsbatch file,退出我的程序,batch file继续删除我的jar子,从远程位置复制新的,启动jar子。 我的问题:删除+复制工程,但 – 应用程序将无法启动。 我认为问题是我不知道如何让Java在单独的进程树中执行batch file。 当运行这个:Runtime.getRuntime()我打开一个subprocess。

所以我的问题 – Java如何在独立的进程树中执行batch file?

Solutions Collecting From Web of "Java如何在独立的进程树中执行batch file"

这是一个解决方法,使用cmd作为interminent层:

public class Main { public static void main(String[] args) throws Exception { Process p = Runtime.getRuntime().exec("cmd /cc:\\test.bat"); } } 

test.bat将包含的地方

 @echo off PING 1.1.1.1 -n 1 -w 5000 >nul java -jar "[path]" 

我相信答案埋在Jakub Zaverka提供的链接中。 使用start而不是cmd来启动批处理文件。 这将使批处理自己的控制台窗口。

我解决了这个问题。 这是由于launch4j – 这个程序我惹了我的JAR。 因为它允许有一个实例,所以即使我删除了升级前的文件,它也不允许我从在升级前的程序中启动的命令行启动新的实例。 现在我翘曲我的程序没有一个实例验证,它工作正常! 谢谢大家的帮助!

顺便说一句 – 我用这个解决方案验证一个实例 – 如何允许一次只运行一个Java程序的实例?