Desktop.getDesktop().browse Hangs

前端 未结 3 493
一个人的身影
一个人的身影 2021-01-21 11:07

I\'m working on an application in which if a user clicks on a link, I want it to open in their default browser. From what I\'ve read, this should in theory work, however, when r

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-21 11:49

    I'm using Ubuntu 16.04 and I have the same hang when using Desktop.getDesktop().browse(). Here is the workaround that I'm using:

    public void browseURL(String urlString) {
    
        try {
            if (SystemUtils.IS_OS_LINUX) {
                // Workaround for Linux because "Desktop.getDesktop().browse()" doesn't work on some Linux implementations
                if (Runtime.getRuntime().exec(new String[] { "which", "xdg-open" }).getInputStream().read() != -1) {
                    Runtime.getRuntime().exec(new String[] { "xdg-open", urlString });
                } else {
                    showAlert("Browse URL", "xdg-open not supported!", true);
                }
            } else {
                if (Desktop.isDesktopSupported())
                {
                    Desktop.getDesktop().browse(new URI(urlString));
                } else {
                    showAlert("Browse URL", "Desktop command not supported!", true);
                }
            }
    
        } catch (IOException | URISyntaxException e) {
            showAlert("Browse URL", "Failed to open URL " + urlString , true);
        }
    }
    

提交回复
热议问题