Desktop.isDesktopSupported在Windows中返回null

时间:2014-01-08 18:31:55

标签: api desktop

我有以下代码

    desktop = Desktop.isDesktopSupported() ? Desktop.getDesktop() : null;
    url = new URL("http://www.facebook.com");
    if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
        try {
            desktop.browse(url.toURI());
        } catch (Exception e) {
            e.printStackTrace();
        }

和桌面为Windows 7返回null。有人可以建议做什么吗?

2 个答案:

答案 0 :(得分:1)

不确定它不适用于Windows 7(它对我有用),但桌面无论如何都可以返回假阴性。我有一个similar problem并且我能找到的唯一方法是使用java.lang.Runtime

以困难的方式打开系统浏览器

对于Windows,您的代码将是

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

可以找到涵盖OSX和Linux的非常好的完整工作代码here

答案 1 :(得分:0)

来自documentation

public static boolean isDesktopSupported()

测试当前平台是否支持此类。如果支持,请使用getDesktop()来检索实例。

返回: true如果当前平台支持此类; false否则

简而言之: Windows 7不支持此类