从JAVA代码调用HTML页面

时间:2013-11-15 19:08:53

标签: java html

我试图从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)

存在“浏览器”路径 请说明我做错了。

6 个答案:

答案 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);
}