Как запустить следующую команду Powershell в Java? - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь запустить команду powershell, которая запускает службу tomcat. В настоящее время команда работает отлично, когда выполняется непосредственно через windows powershell.Однако, если я запускаю ту же команду из Java, я получаю сообщение об ошибке:

Start-Process: не удается найти позиционный параметр, который принимает аргумент 'net'.

myКоманда powershell:

Start-Process -verb runas cmd -ArgumentList "/k net start Tomcat7"

мой код Java:

final String PS_COMMAND = " powershell.exe  Start-Process -verb runas cmd -ArgumentList /k net start Tomcat7   " ;
Process p=  Runtime.getRuntime().exec(PS_COMMAND);
 BufferedReader BR=new BufferedReader(new InputStreamReader(p.getInputStream()));
             String l;
             while((l=BR.readLine()) != null){
                 System.out.print(l);
             }

1 Ответ

0 голосов
/ 14 декабря 2018

Runtime.exec устарел.Вместо этого используйте ProcessBuilder :

ProcessBuilder builder = new ProcessBuilder("powershell.exe",
    "Start-Process", "-verb", "runas", "cmd", "-ArgumentList", "/k net start Tomcat7");
Process p = builder.inheritIO().start();
int exitCode = p.waitFor();

Вызов inheritIO () сделает вывод процесса отображаемым в выводе программы Java, поэтому нет необходимости читатьи распечатайте InputStream процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...