5

これが私のコードです

if (Desktop.isDesktopSupported()) {
  Desktop desktop = Desktop.getDesktop();

  if (desktop.isSupported(Desktop.Action.OPEN)) {
    try {
      desktop.open(file.getCanonicalFile());
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  } else {
    System.out.println("Desktop open action is not supported");
  }
} else {
  System.out.println("Desktop is not supported");
}

MagicISO (この Java バグから取得) をインストールすると、このコードが機能しなくなることはわかっています。しかし、なぜ?MagicISO は具体的に何をしますか? 発生を防止したり回避したりできますか?

さらに悪いことに、このコードは例外をスローしません。そこだけ黙っている。これは本当に私を夢中にさせます。

4

3 に答える 3

0

推測する必要がある場合は、MagicISO がレジストリなどを何らかの方法で変更し、Java がファイルを起動するプログラムを認識できないようにします。別の解決策を探している場合は、Adel Boutros の回答を参照してください。

于 2012-08-24T05:55:34.020 に答える
0

残念ながら、この問題については聞いたことがありませんが、いつでもコードの先頭に手動チェックを追加して、MagicISO がインストールされているかどうかを確認できます。 ...」

于 2012-08-23T21:15:00.963 に答える
0

Launch file from Javaの2番目の回答から引用:

Runtimeクラスを介してアプリケーションを起動できます。

マックでは、

Runtime.getRuntime().exec(new String[] {"open", pathToFile});

Windows では、

Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", pathToFile});
于 2012-08-17T14:39:05.823 に答える