从JAVA代码调用HTML页面

从JAVA代码调用HTML页面,java,html,Java,Html,我试图从JAVA代码中调用存储在桌面上的HTML文件,如下所示。 我找到了这个代码片段 我尝试使用反斜杠和正斜杠,两者都有。但在这两种情况下,它都抛出了这个错误 java.io.IOException: Cannot run program "C:/Program": CreateProcess error=2, The system cannot find the file specified at java.lang.ProcessBuilder.start(ProcessBuild

我试图从JAVA代码中调用存储在桌面上的HTML文件,如下所示。
我找到了这个代码片段

我尝试使用反斜杠和正斜杠,两者都有。但在这两种情况下,它都抛出了这个错误

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)
java.io.IOException:无法运行程序“C:/program”:CreateProcess错误=2,系统找不到指定的文件
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
位于java.lang.Runtime.exec(Runtime.java:617)
位于java.lang.Runtime.exec(Runtime.java:450)
位于java.lang.Runtime.exec(Runtime.java:347)
位于package1.Test.main(Test.java:22)
原因:java.io.IOException:CreateProcess error=2,系统找不到指定的文件
在java.lang.ProcessImpl.create(本机方法)
位于java.lang.ProcessImpl。(ProcessImpl.java:376)
在java.lang.ProcessImpl.start(ProcessImpl.java:136)
存在“浏览器”路径。

请指出我哪里做错了。

如果您使用的是32位版本的浏览器,则应该是
String browser=“C:/Program Files(x86)/Mozilla Firefox/Firefox.exe”

希望这有助于更好的建议


用于此类任务。您应该尝试一下。我保证您一定会发现它很有用。

问题在于浏览器路径中的空间。系统认为您正在尝试运行一个名为“C:/program”的程序,其中“Files/Mozilla”和“Firefox/Firefox.exe”作为参数。尝试在exe名称周围添加引号:

String browser ="\"C:/Program Files/Mozilla Firefox/firefox.exe\" ";
要结合SnakeDoc的建议,您可以使用环境变量来处理“程序文件”的路径部分,但仍需要引号来处理路径中的任何其他空格:

String browser = "\"" + System.getenv("ProgramFiles(X86)") + "Mozilla Firefox/firefox.exe\"";

尝试使用系统属性:

System.getenv("ProgramFiles");

试一试


程序文件中的空格有问题,如果不在引号内,则将其视为分隔符。这是微软的一个好主意……

最好的方法是使用
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);
}

第一行表示
无法运行程序C:/program
——这不是您试图运行的程序。我认为路径中的空格使它无法工作。或者:
stringbrowser=System.getenv(“ProgramFiles(X86)”)+“Mozilla Firefox/Firefox.exe”酷-不知道程序文件有一个环境变量。“Mozilla”和“Firefox”之间的空间可能仍然有问题,对吗?实际上不确定。。。我喜欢尽可能地使用环境变量,这有助于使我的程序更具动态性,减少静态/硬编码的东西。同意-明确提倡使用环境变量-你可能只需要在完成时引用整个内容…对,这应该很容易<代码>字符串浏览器=“\”+System.getenv(“程序文件(X86)”)+“Mozilla Firefox/Firefox.exe\”
System.getenv("ProgramFiles(X86)");
String browser ="\"C:/Program Files/Mozilla Firefox/firefox.exe\"";
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);
}