我正在尝试使用 getRuntime().exec() 运行 cmd 命令。问题是,它仅在我的命令字符串为 ipconfig 时才有效,而如果我尝试运行 java -version 或时间,然后抛出错误:
java.io.IOException:无法运行程序“time”:CreateProcess error=2,系统找不到指定的文件
String command = "time";
Process p;
try {
p = Runtime.getRuntime().exec(command);
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
//System.out.println(line);
textField_1.setText(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最佳答案
我通过使用ProcessBuilder
解决了这个问题。我仍然不知道为什么早期的代码不适用于所有命令。但通过使用 ProcessBuilder,我能够执行任何 cmd 查询。
引用代码如下:
String command_ping = "ping " + host_name;
try {
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", command_ping);
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuffer buffer = new StringBuffer();
String line = "";
while (true)
{
buffer.append(line).append("\n");
line = r.readLine();
if (line == null) { break; }
}
message_ping= buffer.toString();
p.waitFor();
r.close();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
关于java getRuntime().exec() 不适用于运行基本的 cmd 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44560542/