java - Java如何在单独的进程树中执行批处理文件

标签 java windows process batch-file runtime

我正在为我的 Java 应用编写一个更新机制。 我创建了一个 Windows 批处理文件,退出我的程序,批处理文件继续删除我的 Jar,从远程位置复制新的,启动 jar。 我的问题:删除 + 复制有效,但是 - 应用程序无法启动。 我认为问题是我不知道如何让 Java 在单独的进程树中执行批处理文件。 运行时: 运行时.getRuntime() 我打开一个子进程。

所以我的问题 - Java 如何在单独的进程树中执行批处理文件?

最佳答案

Here是一种使用 cmd 作为中间层的解决方法:

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

test.bat 将包含

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

关于java - Java如何在单独的进程树中执行批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9657038/

相关文章:

c++ - 启动应用程序,在 C++ 中捕获标准输出和标准错误

windows - 使用 vbscript 激活(置于前台)特定窗口

无法在 Linux 中创建僵尸进程

java - @OneToMany 如果是集合的一部分则防止删除

java - 如何对嵌套 JSON 数组进行排序?

windows - 无法从 Centos vm ping 窗口 vm。我怎样才能解决这个问题?

windows - 监控网络连接带宽的最佳工具

.net - System.Diagnostic 可以在收到任何字符串而不是行尾时重定向输出吗?

java - 创建通用方法以适应接口(interface)和通用父类

java - 首次启动和更新后提醒 android