我正在尝试运行一个powershell命令,它启动tomcat service.Currently,当直接通过windows执行命令时,该命令运行得很好。但是,如果我从java运行相同的命令,则会得到并错误地声明
启动-进程:无法找到接受参数'net‘的位置参数。
我的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);
}发布于 2018-12-14 15:40:27
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。
https://stackoverflow.com/questions/53781556
复制相似问题