支持Desktop和desktop.browse,但浏览仍然挂起

时间:2016-06-20 15:38:44

标签: java url web desktop

我试图在Java的默认浏览器中打开一个链接。我不想创建一个简单的Web浏览器,我想使用现有的浏览器。人们建议使用以下内容:

Desktop.getDesktop().browse(new URI("http://www.targetsite.com"));

但是,这只是在调用browse时挂起,我最终不得不强行退出。

我看到了运行以下内容的建议,以确定Desktop和desktop.browse是否应该在我的系统上运行:

if (Desktop.isDesktopSupported()) {
    System.out.println("Desktop IS supported on this platform ");
    if (Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) {
        System.out.println("Action BROWSE  IS supported on this platform ");
    } else {
        System.out.println("Action BROWSE  ISN'T supported on this platform ");
    }
} else {
    System.out.println("Desktop ISN'T supported on this platform ");
}

给出了输出:

Desktop IS supported on this platform 
Action BROWSE  IS supported on this platform 

我该怎么做才能解决或解决这个问题?

使用Java 1.8.0_73

1 个答案:

答案 0 :(得分:6)

看起来你做的一切都正确,你的代码应该在Windows和OS X中按预期工作。毫不奇怪,在Linux中对Desktop的支持并不是那么好。您可以尝试另一种方法:

if (Runtime.getRuntime().exec(new String[] { "which", "xdg-open" }).getInputStream().read() != -1) {
    Runtime.getRuntime().exec(new String[] { "xdg-open", urlString });
}