我正在尝试运行启动 tomcat 服务的 powershell 命令。目前,当直接通过 Windows powershell 执行时,该命令运行良好。但是,如果我从 Java 运行相同的命令,我会得到错误提示
Start-Process : A positional parameter cannot be found that accepts argument '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);
}
最佳答案
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。
关于java - 如何在 java 中运行以下 Powershell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781556/