我正在尝试运行一个powershell命令来启动tomcat服务。当前,当直接通过Windows powershell执行该命令时,该命令可以正常工作。但是,如果我从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);
}
答案 0 :(得分:2)
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。