2

以前の質問で概説したように、私は尋ねました。

Web サイトは次のようにして起動できます。

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

これは Ubuntu (gnome) では問題なく動作しますが、OpenSUSE (KDE フレーバー) では動作しないようです。これについてSunに報告されたバグがあります。

これを行う別の方法に関するアイデアは、Gnome と KDE の両方で機能します。

4

4 に答える 4

2

回避策として、標準コマンドを実行して、任意の Linux デスクトップでファイルまたは URL を開くことができます: xdg-open.

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

于 2010-02-18T15:35:21.757 に答える
1

Sun/Oracle からのバグ修正を待っている間に、ユーザーの既定のブラウザーを見つけて、ProcessBuilder クラスを使用して自分で呼び出すことができます。gnonftool-2 ユーティリティを使用して、gnome でデフォルトのブラウザーを見つけることができます。KDEでの方法がわかりません。ユーザーがgnomeでClearlooksを実行しているかどうかを確認しようとする例を次に示します。

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;
    }
}
于 2010-02-08T18:06:02.470 に答える
0

strace -fそれを実行して、何が実行されるかを確認します。クロスデスクトップブラウザの実行に適したポリシーだとJavaが考えているのだろうか。

于 2010-02-08T17:59:14.547 に答える
0

追加のライブラリを使用してもかまわない場合は、JDIC を試すことができます

于 2010-02-08T18:56:24.667 に答える