【发布时间】:2013-08-10 19:56:40
【问题描述】:
我正在编写一个简单的 Java 应用程序,用户可以在其中执行 cmd 命令。只有一个 TextField 输入命令和一个按钮来执行它。代码如下:
sendButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", message.getText());
Process pr = pb.start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
如果用户执行,一切正常
notepad.exe
但由于某种原因,如果命令是例如,我会得到 java.lang.IllegalArgumentException:
"C:\Users\Username\AppData\Local\Google\Chrome\Application\chrome.exe" www.youtube.com
这可能是因为引号,有人知道解决方法吗?
【问题讨论】:
-
不带引号可以运行吗?
IllegalArgumentException基本上意味着 Command not found。 -
我可以在没有引号的情况下运行它。但理想情况下,应用程序应该能够运行可以在 cmd 本身中运行的所有命令。
-
不,Exceprion 来自
Process pr = pb.start(); -
阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果没有,它应该提供更多关于失败原因的信息。然后忽略它引用
exec并(继续)使用ProcessBuilder构建Process。还要将String arg分解为String[] args以说明本身包含空格的参数。
标签: java processbuilder illegalargumentexception