我正在使用以下代码打开“ sample.html”文件。
String filename = "C:/sample.html";
String browser = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe";
Runtime rTime = Runtime.getRuntime();
Process pc = rTime.exec(browser + filename);
pc.waitFor();
但是,出现以下错误。
java.io.IOException: Cannot run program "C:/Program": CreateProcess error=2, The system cannot find the file specified
有人能帮我解决这个问题吗?预先感谢。
Runtime.exec(String)
自动将字符串分割成空格,假设第一个标记是命令名称,其余的是命令行参数。此外,尽管browser
和file
之间不是空格,但这不是问题的根本原因。
它认为您想使用两个命令行参数运行“ C:/ Program”:
改为使用Runtime.exec(String[])
,那样您可以完全控制什么:
Runtime.exec(String[])
尝试一下。
String[] command = new String[]{browser, filename};
Runtime.exec(command);
停止使用 String filename = "C:\\sample.html";
String browser = "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe";
Runtime runtime = Runtime.getRuntime();
try {
runtime.exec(new String[] {browser, filename});
} catch (IOException e) {
e.printStackTrace();
}
-问题在于它如何[[处理单个字符串输入。
how / where
失败:请注意,它在“ C:/ Program”(或第一个空格)之后停止。这表明exec“错误地”解析了字符串,因此甚至没有在寻找正确的可执行文件。无法运行程序“ C:/程序”
相反,请考虑使用Runtime.exec(String)
。尽管用法依系统而定,但ProcessBuilder允许将可执行文件名(需要专门处理)和参数分开,并且最不明智地正确调用目标。
different问题。