如何使用ProcessBuilder启动批处理文件而不是子进程?

时间:2014-01-09 07:48:47

标签: java batch-file processbuilder

我想要做的是将补丁应用到我的软件中。 要应用补丁,我必须运行一个批处理文件,它将替换应用程序jar文件。

我将开始从正在运行的应用程序中应用补丁。

我有一个从Java运行的批处理文件。我正在使用流程构建器来运行批处理文件。

在批处理文件中,我正在关闭使用

调用批处理文件的java应用程序
 taskkill /f /t /im myjavaprogram.exe

执行此命令时,我得到以下输出

01/09/2014 13:15:25 : Starting to apply patch. 
ERROR: The process with PID 3652 (child process of PID 3564) could not be terminated.
Reason: The process cannot terminate itself.
SUCCESS: The process with PID 3564 (child process of PID 5648) has been terminated.
SUCCESS: The process with PID 5648 (child process of PID 3624) has been terminated.

由java程序启动的批处理文件作为子进程启动。

如何以独立方式或explorer.exe的子进程开始批处理文件进程?

2 个答案:

答案 0 :(得分:1)

你不能 - 至少不是直接的。 ProcessBuilder只创建子进程。

答案 1 :(得分:0)

而不是我可以给出算法。

创建一个总是侦听特定文件的类x.txt, 如果该文件不存在,请在java中调用System.exit()

因此,在批处理文件中删除x.txt。然后java应用程序将终止。

注意:这可能不是一个好的解决方案,但我给出了这个解决方案,因为它也可以工作。