Как запустить веб-сайт в Java Swing таким образом, чтобы он работал в Gnome и KDE

Как указано в предыдущем вопросе, который я задал.

Веб-сайт можно запустить, выполнив следующие действия:

Desktop.getDesktop().browse(new java.net.URI("www.google.com"));

Это отлично работает в Ubuntu (gnome), но не работает в OpenSUSE (разновидность KDE). Об этом сообщает Sun.

Любые идеи об альтернативных способах сделать это, которые будут работать как в Gnome, так и в KDE.


person Dan    schedule 08.02.2010    source источник
comment
Это должно сработать, если, возможно, для файлов HTML не существует неправильного обработчика по умолчанию?   -  person Brian Knoblauch    schedule 08.02.2010


Ответы (4)


В качестве обходного пути вы можете запустить стандартную команду для открытия файлов или URL-адресов на любом рабочем столе Linux: xdg-open.

http://portland.freedesktop.org/xdg-utils-1.0/xdg-open.html

person Danilo Piazzalunga    schedule 18.02.2010

В ожидании исправления ошибки от Sun/Oracle вы можете найти браузер пользователя по умолчанию и вызвать его самостоятельно, используя класс ProcessBuilder. Вы можете найти браузер по умолчанию в gnome с помощью утилиты gnonftool-2. Я не уверен, как в KDE. Вот пример, где я пытаюсь выяснить, использует ли пользователь Clearlooks на gnome:

private boolean usingClearlooks() {
    try {
        File gconf = new File("/usr/bin/gconftool-2");
        if(gconf.exists() == false) {
            return false;
        }
        ProcessBuilder pb = new ProcessBuilder(gconf.getAbsolutePath(), "-g", "/desktop/gnome/interface/gtk_theme");
        Process psProc = pb.start();
        psProc.waitFor();
        BufferedReader br = new BufferedReader(new InputStreamReader(psProc.getInputStream()));
        boolean clearlooks = false;
        String line = null;
        while((line=br.readLine()) != null) {                                                       
            if ((line.toLowerCase().contains("clearlooks"))) {
                clearlooks = true;
                break;
            }
        }
        return clearlooks;
    }
    catch(Exception e) {
        e.printStackTrace();
        return false;
    }
}
person Yuvi Masory    schedule 08.02.2010

strace -f и посмотрите, что будет выполнено. Интересно, что java считает хорошей полицией для выполнения браузера между рабочими столами.

person elcuco    schedule 08.02.2010

Если вы не возражаете против использования дополнительной библиотеки, вы можете попробовать JDIC

person vickirk    schedule 08.02.2010
comment
JDIC кажется мне мертвым проектом. - person Robert; 08.03.2011