【问题标题】:How to get Desktop class supported under Linux?如何在 Linux 下获得桌面类支持?
【发布时间】:2012-01-05 16:29:48
【问题描述】:

我正在编写一个 java 应用程序,我想在用户的默认 Internet 浏览器中打开我的程序的链接。我尝试像这样使用桌面类:

if (Desktop.isDesktopSupported()) {
    Desktop desktop = Desktop.getDesktop();
    if (desktop.isSupported(java.awt.Desktop.Action.BROWSE)) {
        try {
            URI uri = new URI(url); // url is a string containing the URL
            desktop.browse(uri);
        }
        catch (URISyntaxException ex) {
            Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

但是首先如果返回 false。我的操作系统是最新版本的 Ubuntu。有人知道如何在 java 中获得该桌面的支持吗?

【问题讨论】:

    标签: java linux hyperlink desktop


    【解决方案1】:

    您本身不需要在 Gnome 桌面上运行 java 代码。您只需要安装 Gnome 库,以便 Java 识别它(如 ccheneson 所说)。

    如果您运行的是新版本的 Ubuntu,它不附带 gnome 库,因为它使用 Unity。尝试安装libgnome2-0。当我安装它时,它附带了一些其他软件包(libbonobo2-0libbonobo2-commonlibgnomevfs2-0libgnomevfs2-common),所以我不知道libgnome2-0 是否足够,或者是否还需要其他任何软件包.但是后来我的 12.04 Ubuntu 系统被 Java API 识别了。

    我知道这篇文章比较老了——但是这个问题在网上的很多地方都有,我唯一找到“正确”答案的地方(对我来说)是here

    【讨论】:

    • 我认为现在只需安装gtk3gtk2 就足够了(无需拉旧libgnome2)。如果存在 libgnome,它将使用 gnome_url_show() 函数,如果存在 GTK,它将使用 gtk_show_uri()
    【解决方案2】:

    来自this article

    使用 Desktop.isDesktopSupported() 方法确定是否 桌面 API 可用。在 Solaris 操作系统和 Linux 平台,此 API 依赖于 Gnome 库。如果那些 库不可用,此方法将返回 false。后 确定支持 API,即 isDesktopSupported() 返回 true,应用程序可以检索一个 使用静态方法 getDesktop() 的桌面实例。

    尝试在 Gnome 桌面上运行您的代码。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2020-12-11
    • 2021-11-30
    相关资源
    最近更新 更多