我试图从JAVA代码中调用存储在桌面上的HTML文件,如下所示 我找到了此代码段here
try
{
Runtime r= Runtime.getRuntime();
String url = "C:\\Users\\Rana\\Desktop\\test.html";
String browser ="C:/Program Files/Mozilla Firefox/firefox.exe ";
Process p = r.exec(browser);
p.waitFor();
}
catch(Exception e)
{
e.printStackTrace();
}
我尝试使用反斜杠和正斜杠。但它在这两种情况下都抛出了这个错误......
java.io.IOException: Cannot run program "C:/Program": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at package1.Test.main(Test.java:22)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:376)
at java.lang.ProcessImpl.start(ProcessImpl.java:136)
存在“浏览器”路径 请说明我做错了。
答案 0 :(得分:2)
问题在于浏览器路径中的空间。系统认为您正在尝试使用“Files / Mozilla”和“Firefox / firefox.exe”作为参数运行名为“C:/ Program”的程序。尝试在exe名称周围添加引号:
String browser ="\"C:/Program Files/Mozilla Firefox/firefox.exe\" ";
要合并SnakeDoc的建议,您可以使用环境变量来处理路径部分到“程序文件”,但您仍然需要引号来处理路径中的任何其他空格:
String browser = "\"" + System.getenv("ProgramFiles(X86)") + "Mozilla Firefox/firefox.exe\"";
答案 1 :(得分:2)
尝试使用系统属性:
System.getenv("ProgramFiles");
或
System.getenv("ProgramFiles(X86)");
答案 2 :(得分:1)
更好的建议,
使用AutoHotKey来完成这些任务。你应该试一试。我保证你一定会发现它很有用。
答案 3 :(得分:0)
如果您使用的是32位版本,则浏览器应为String browser ="C:/Program Files(x86)/Mozilla Firefox/firefox.exe ";
希望这会有所帮助
答案 4 :(得分:0)
尝试
String browser ="\"C:/Program Files/Mozilla Firefox/firefox.exe\"";
程序文件中的空间存在问题,如果不在引号内,则会被视为分隔符。这是微软的睿智想法......
答案 5 :(得分:0)
最好的方法是使用java.awt.Desktop
File htmlFile = new File("C:" + File.separator + "Users" + File.separator + "theuser" + File.separator + "Desktop" + File.separator + "Test.html");
if(Desktop.isDesktopSupported()) {
Desktop.getDesktop().open(htmlFile);
}