Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get Desktop class supported under Linux?

I am writing a java application and I want to open a link from my program in user's default internet browser. I tried to use class Desktop like this :

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);
        }
    }
}

However first if returns false. My OS is newest version of Ubuntu. Does anybody know how to get that Desktop supported in java?

like image 821
koleS Avatar asked Nov 24 '11 13:11

koleS


2 Answers

You don't need to run the java code on the Gnome desktop, per se. You just need to have the Gnome libraries installed so that Java recognizes it (as ccheneson said).

If you are running a new version of Ubuntu, it doesn't come with the gnome libraries because it uses Unity. Try installing libgnome2-0. When I installed it a few other packages came with it (libbonobo2-0, libbonobo2-common, libgnomevfs2-0, libgnomevfs2-common) so I don't know if libgnome2-0 is sufficient or if any of the others are necessary as well. But then my 12.04 Ubuntu system was recognized by the Java API.

I know this post is relatively old - but this question is in a variety of places online and the only place I found the "correct" answer (for me) was here

like image 62
ackey Avatar answered Sep 28 '22 03:09

ackey


From this article

Use the Desktop.isDesktopSupported() method to determine whether the Desktop API is available. On the Solaris Operating System and the Linux platform, this API is dependent on Gnome libraries. If those libraries are unavailable, this method will return false. After determining that the API is supported, that is, the isDesktopSupported() returns true, the application can retrieve a Desktop instance using the static method getDesktop().

Try running your code on Gnome desktop.

like image 39
ccheneson Avatar answered Sep 28 '22 02:09

ccheneson