我正在尝试使用Desktop
类在Windows上打开本地HTML文件.但它只适用于某些特定的JRE,而不适用于其他一些JRE.这是我的代码:
try { if (Desktop.isDesktopSupported()) { Desktop desktop = Desktop.getDesktop(); if (desktop.isSupported(Desktop.Action.OPEN)) { desktop.open(new File("test.html")); } else { throw new Exception("OPEN action not supported"); } } else { throw new Exception("Desktop not supported"); } } catch (Exception e) { e.printStackTrace(); }
如果它不起作用,则不会抛出异常,并且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"文件时出现同样的问题
谢谢.
这个问题已经存在了一段时间,并且在本博客中已经记录了一些解决方案.
我已经使用了下面的代码,它在我使用的每台Windows机器上都是可靠的,无论JRE如何.对不起,我不知道我测试过的所有JRE.
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + path);