gpt4 book ai didi

Java程序在调用批处理文件之前退出

转载 作者:行者123 更新时间:2023-11-30 03:32:51 25 4
gpt4 key购买 nike

我编写了一个简单的java程序来调用批处理文件。问题是,当我运行这个 Java 程序时没有任何反应,批处理文件没有执行。但是当我在 Debug模式下逐行执行相同的程序时,批处理文件就会被执行。

我怀疑这里的问题是我的 JVM 在我的进程实际完成之前就关闭了。我可以放入 Thread.sleep() 但我不想这样做。有没有其他方法可以让我的进程完成然后关闭 JVM。

public static void main(String[] args) {

String batchFilePath = "D:\\MyDir";
String batchFileName = "callMe.bat";
executeBatchFile(batchFilePath, batchFileName);
}

public static void executeBatchFile(String filePath, String fileName) {
try {
List cmdAndArgs = Arrays.asList("cmd", "/c", fileName);
ProcessBuilder pb = new ProcessBuilder(cmdAndArgs);
pb.directory(new File(filePath));
Process p = pb.start();
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

您可以使用waitFor ProcessBuilder 的方法等待启动的进程完成。以下是 javadocs 中对 waitFor 的描述

Causes the current thread to wait, if necessary, until the process represented by this Process object has terminated. This method returns immediately if the subprocess has already terminated. If the subprocess has not yet terminated, the calling thread will be blocked until the subprocess exits.

关于Java程序在调用批处理文件之前退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com