java - 从 Java 启动外部控制台应用程序

标签 java console external

在 Java 应用程序中,我需要运行外部控制台应用程序。对于窗口的一切都很好:

try {
System.out.println("Running...");
    Runtime.getRuntime().exec("notepad.exe");
    System.out.println("End.");
}
catch(Exception e) {
    System.out.println(e.getMessage());
}

成功启动记事本。

但是如果我把 D:\\MyProg.exe.bat 甚至 cmd.exe (这是作为记事本的 PATH是)它不起作用。无一异常(exception)。只是:

Running...
End.

最佳答案

首先,Runtime.exec() 很可能会异步返回,因此只需打印“end”就始终有效,因为 exec 调用会立即返回,这就是您所看到的。

这里可能会出现很多其他问题。我认为正在发生的情况是,您正在调用的程序可能会在您无法读取的标准输出上输出 I/O,或者您可能需要 wait for it to finish在退出java进程之前。有一个great article关于 Runtime.exec() 的各种问题,您可能应该阅读,它涵盖了这个问题和其他问题。

关于java - 从 Java 启动外部控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2873553/

相关文章:

c++ - Windows 控制台上的 UTF-8 输出

javascript控制台-infinity,这是什么意思?

asp.net - 如何读取外部页面的标题?

authentication - 如何在配置为使用 LDAP 作为用户数据库的 Jenkins 上添加外部用户?

c++ - 类有外部链接吗?

java - Thread.sleep 是如何工作的?

java - Android 打开 fragment 崩溃

java - 如何在android中设置一个主要 Activity 并填充 fragment

java - ListView 中的不同按钮

c++ - 为什么要为命令行应用程序包含 QtWidgets?