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 bug得到它)会使这段代码不起作用。但为什么?MagicISO 专门做什么?我可以防止它发生或解决它吗?

更糟糕的是,这段代码没有抛出任何异常。它只是在那里保持沉默。这真的让我很抓狂。

4

3 回答 3

0

Well if I had to take a guess, MagicISO modifies the registry or something in some way which prevents Java from knowing what program to launch the file with. If you're looking for an alternative solution, see Adel Boutros's answer

于 2012-08-24T05:55:34.020 回答
0

不幸的是,我以前没有听说过这个问题,但是您总是可以在代码的开头添加手动检查,以查看是否已安装 MagicISO,如果已安装,请留下有用的消息“此程序无法运行,因为……”

于 2012-08-23T21:15:00.963 回答
0

引用来自 Java 的 Launch 文件的第二个答案:

您可以通过Runtime类启动应用程序:

在 Mac 上,

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

在 Windows 上,

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