在默认浏览器异常

时间:2015-07-12 12:52:57

标签: java eclipse windows

我使用Eclipse开发Java桌面应用程序。 Desktop类有一个名为browse()的有用方法,它在系统的默认浏览器中打开一个URI。我的问题是此功能在Eclipse中不再有效,但在Eclipse之外仍可正常工作,例如在启动包含代码的可执行Jar文件时。

这是一个简短的可编辑示例:

import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class OpenExample
{
    public static void main(String[] arguments) throws URISyntaxException, IOException
    {
        Desktop.getDesktop().browse(new URI("https://www.google.com/"));
    }
}

我收到以下例外:

Exception in thread "main" java.io.IOException: Failed to open https://www.google.com/. Error message: A device attached to the system is not functioning.

    at sun.awt.windows.WDesktopPeer.ShellExecute(Unknown Source)
    at sun.awt.windows.WDesktopPeer.browse(Unknown Source)
    at java.awt.Desktop.browse(Unknown Source)
    at OpenExample.main(OpenExample.java:10)

可能是什么问题?显然,Java代码是正确的,因为它之前有效,所以必须在Eclipse或甚至Windows中删除某些内容。

2 个答案:

答案 0 :(得分:0)

这可能与此JDK错误相关:https://bugs.openjdk.java.net/browse/JDK-8064934

即。可能会发生真正的错误,但由于此错误,JDK报告错误的错误代码。

答案 1 :(得分:-1)

import java.awt.Desktop;
import java.net.URI;

public class OpenExample {
    public static void main(String[] args) throws Exception {
        String url = "http://google.com";

        if (Desktop.isDesktopSupported()) { // for windows
            Desktop.getDesktop().browse(new URI(url));
        } else { // for linux
            Runtime runtime = Runtime.getRuntime();
            runtime.exec("/usr/bin/firefox -new-window " + url);
        }
    }
}
  • 试试这个有时候它也依赖于操作系统。
  • 检查打印语句是否提供URL。

    如果可以,请提供您的评论