6

(ここがこの質問をするのに適切な場所かどうかわかりません。適切なサイトに移動してください)

以下のコードに示す問題があります。CITRIX Xen App 6- を搭載したマシン (Windows 2008) では動作しません。ブラウザが起動しないだけで、エラーはありません。私のデスクトップ (windows7 ボックス) では、動作します。

package trials;

import java.awt.*;
import java.io.File;
import java.io.IOException;


public class Launch {

    public static void main(String[] args) throws IOException {
        if (args.length < 1) {
            System.out.println("argument filepath expected");
            return;
        }

        final boolean browseSupported = Desktop.getDesktop().isSupported(Desktop.Action.BROWSE);
        if ( !browseSupported) {
            System.out.println("Browse not supported");
            return;
        }

        final String filename = args[0];
        final File file = new File(filename);
        if (file.exists()) {
            Desktop.getDesktop().browse(file.toURI());
        } else {
            System.out.println(file.getAbsolutePath() + " does not exist");
        }
    }
}

次の回答で提案されているように、「オープン」を使用しようとしました。それは動かなかった。問題を64ビット版のJava(Oracle 1.6.0_25)に絞り込む

4

5 に答える 5

4

ローカルファイルを開くには、使用しDesktop().open()ないでくださいDesktop.browse()

于 2011-08-31T10:35:41.200 に答える
2

この症状の原因は、win2008がサポートしていないシステムコールを使用するawtパッケージだと思います。しかし、それはヒントです。

これについては、他の解決策を試す必要があると思います:

if (file.exists()) {
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file.toURI());
    } else {
        System.out.println(file.getAbsolutePath() + " does not exist");
    }
于 2011-08-31T10:31:43.783 に答える
2

Windows XP でテストした別の簡単な可能性:

org.eclipse.swt.program.Program.launch("file://" + filename);
于 2012-11-30T08:53:38.210 に答える
1

Desktop.browse()ローカル Web ブラウザーを起動します。Windows では、おそらく Web ブラウザがデフォルトのシェルに追い出し、ファイルを開きます。

私の推測では、Citrix システムのブラウザはファイルを適切に処理できない/処理しないため、シェルに渡されません。

いずれにせよ、(URL ではなく) ファイルを開いている場合は、Destop.open()代わりに使用したいと思われます。

于 2011-08-31T13:02:20.063 に答える
0

デスクトップクラスでも同様の問題がありました。

ファイルが開かず、例外がスローされる場合は、編集してみてください。関連するプログラムがなく、エディターがあったため、いくつかの画像ファイルとウィンドウで問題が発生しました。

于 2015-01-14T20:10:51.597 に答える