使用ProcessBuilder启动CMD

我试图通过使用以下代码在Windows中启动CMD应用程序,但它不能按预期工作。 来自不同网站的几个示例显示,“cmd”作为ProcessBuilder构造中的参数应该有效。

我需要做些什么才能让我的Java应用程序在Windows中打开CMD应用程序?

public class JavaTest { public static void main(String[] args) { ProcessBuilder pb = new ProcessBuilder("cmd"); try { pb.start(); System.out.println("cmd started"); } catch (IOException e) { System.out.println(e.getMessage()); } } } 

当我尝试使用不存在的应用程序时,它实际上会输出错误,这意味着它实际上运行“CMD”。 但CMD应用程序没有按预期弹出?

您需要使用start命令。 实际上,即使我没有看到弹出的新命令提示符,但您可以检查是否确实使用您的task manager启动了新的cmd.exe

 ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start"); 

但是,使用Runtime.exec()可以实现相同的function,这实际上会弹出一个新的命令提示符。

 Runtime.getRuntime().exec("cmd.exe /C start"); 

要与ProcessBuilder一起使用,您必须将命令分开,如下所示:

 final List commands = new ArrayList(); commands.add("cmd.exe"); commands.add("/C"); commands.add("start"); ProcessBuilder pb = new ProcessBuilder(commands); pb.start();