Запустите CMD с помощью ProcessBuilder

Я пытаюсь запустить приложение CMD в windows, используя следующий код, но он работает не так, как ожидалось. Несколько примеров из разных веб-сайтов показывают, что "cmd" в качестве аргумента в конструкции ProcessBuilder должен работать.

что мне нужно сделать, чтобы мое приложение Java открыло приложение CMD в windows?

 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 приложение не появляется, как ожидалось?

2 ответов


вам нужно использовать старт. На самом деле, даже я не вижу новой командной строки, но вы можете проверить, что новый cmd.exe определенно начал использовать свой task manager.

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

хотя, та же функциональность может быть достигнута с помощью Runtime.exec(), и на самом деле появляется новая командная строка.

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

чтобы использовать его с ProcessBuilder вы должны разделить команды такой:

final List<String> commands = new ArrayList<String>();                

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