这是我的代码
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(从this Java bug获取)将使此代码无效。但为什么? MagicISO具体做什么?我可以阻止它发生或解决它吗?
更糟糕的是,此代码不会引发任何异常。它只是在那里保持沉默。这真的让我很疯狂。
答案 0 :(得分:0)
引用Launch file from Java的第二个答案:
您可以通过Runtime
课程启动该应用程序:
在Mac上,
Runtime.getRuntime().exec(new String[] {"open", pathToFile});
在Windows上,
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", pathToFile});
答案 1 :(得分:0)
不幸的是我以前没有听说过这个问题,但你总是可以在代码的开头添加一个手动检查,以查看是否已经安装了MagicISO,如果是这样的话,请在"这一行留下有用的信息由于......"
,程序无法运行答案 2 :(得分:0)
如果我不得不猜测,MagicISO会以某种方式修改注册表或其他东西,以防止Java知道启动文件的程序。如果您正在寻找替代解决方案,请参阅Adel Boutros的回答