Witam,
tworzę w NetBeans6.0.1 projekt który wymaga uruchomienia domyślnej przeglądarki z określonym URL.

Naturalnym rozwiązaniem jest skorzystanie z klasy java.awt.Desktop. Aktualnie wygląda to u mnie następująco:

        String url = "http://.........";
        if (java.awt.Desktop.isDesktopSupported()) {
            java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
            if (desktop.isSupported(java.awt.Desktop.Action.BROWSE)) {
                try {
                    desktop.browse(new URI(url));
                } catch (IOException ex) {
                    JOptionPane.showMessageDialog(this, "Błąd I/O: Nie mogę uruchomić domyslnej przeglądarki internetowej\n\n" + ex.toString());
                } catch (URISyntaxException ex) {
                    JOptionPane.showMessageDialog(this, "Problem z URL: Nie mogę uruchomić domyslnej przeglądarki internetowej\n\n" + ex.toString());
                }
            } else {
                JOptionPane.showMessageDialog(this, "desktop.isSupported(java.awt.Desktop.Action.BROWSE) zwraca false :(((");
            }
        } else {
            try {
                Runtime.getRuntime().exec("firefox " + url);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(this, "Nie udało się wywołanie aplikacji firefox  :(((");
            }
        }

Pod Windows klasa Desktop działa poprawnie.
Pod Suse 10.3 + KDE 3.5.7 (wersja AMD64) zmuszony byłem skorzystać z klasy Runtime.
Moim zdaniem nie jest to eleganckie rozwiązanie. Użytkownik może nie posiadać aplikacji firefox, nie miec zdefiniowanej ścieżki do niego lub po prostu preferować inne rozwiązania.

Grzebiąc w googlach znalazłem informację z której moim zdaniem wynika, że KDE nie wspiera klasy Desktop.:

Java.awt.Desktop implementation does depend on current desktop environment. Currently it is supposed to work with Gnome, on Linux and Solaris 9+, other environment may or may not work. This is what Desktopn.isDesktopSupported() method is intended for

Informacja ma już równo 2 lata, poza tym nie jest zbyt precyzyjna.
Korzystam z JDK version "1.6.0_05"; Java HotSpot(TM) 64-Bit Server VM (build 10.0-b19, mixed mode)

Moje pytania są następujące:

  • Czy faktycznie problemem jest KDE? może tylko kombinacja (...) jest trefna ?
  • Jak ustalić, którą przeglądarkę uruchomić (i jak), gdy nie ma dostępnej klasy Desktop ?</url>