java – Desktop.open()在某些JRE上静默失败

前端之家收集整理的这篇文章主要介绍了java – Desktop.open()在某些JRE上静默失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 Desktop类在Windows上打开本地html文件.但它仅适用于某些特定的JRE,而不适用于其他一些JRE.
这是我的代码
  1. try {
  2. if (Desktop.isDesktopSupported()) {
  3. Desktop desktop = Desktop.getDesktop();
  4. if (desktop.isSupported(Desktop.Action.OPEN)) {
  5. desktop.open(new File("test.html"));
  6. } else {
  7. throw new Exception("OPEN action not supported");
  8. }
  9. } else {
  10. throw new Exception("Desktop not supported");
  11. }
  12. } catch (Exception e) {
  13. e.printStackTrace();
  14. }

如果它不起作用,则不会抛出异常,并且STDERR中不会打印任何文本.

它适用于:

> JRE 1.6.0_14(32位)
> JRE 1.7.0_05(32位)
> JRE 1.7.0_45(64位)
> JRE 1.7.0_51(64位)

它不适用于:

> JRE 1.6.0_26(64位)
> JRE 1.6.0_37(64位)
> JRE 1.7.0_02(64位)
> JRE 1.7.0_21(64位)编辑:但适用于CentOS

所有测试都在同一个Win7 64位盒上进行.

编辑:尝试打开“txt”或“pdf”文件时出现同样的问题

谢谢.

解决方法

这个问题已经存在了一段时间,并且已经记录了一些解决方at this blog.

我已经使用了下面的代码,它在我使用的每台Windows机器上都是可靠的,无论JRE如何.对不起,我不知道我测试过的所有JRE.

  1. Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + path);

猜你在找的Java相关文章