【问题标题】:Java how to check if it's Vista, Windows 7 or higher with apache commonsJava如何使用apache commons检查它是否是Vista,Windows 7或更高版本
【发布时间】:2012-03-10 19:48:30
【问题描述】:

我知道你可以这样做

SystemUtils.IS_OS_WINDOWS_VISTA || SystemUtils.IS_OS_WINDOWS_7

但是有没有办法为所有未来版本的窗口以编程方式执行此操作,因此该方法类似于:

isWindowsVistaOrHigher()

【问题讨论】:

  • Java 为什么要关心,只要有合适的 JVM?
  • 我希望尽可能利用一些 vista/windows 7 操作系统的功能,这些功能在旧版本的 Windows 中不可用。所以我只需要在 Vista、Windows 7 或更高版本时调用此代码。
  • “一些 .. features” 具体来说是什么?为什么 try/catch 不足以弥补差异?
  • @Jeffrey:不完全是。不仅仅是Vista || Windows 7 但 Vista ||或更高
  • @AndrewThompson 老实说,为什么并不像如何那样重要。我会告诉你更多关于原因的信息,但它实际上非常复杂且冗长,并且与许多无法更改的历史代码有关。我不喜欢走这条路,但我真的别无选择

标签: java windows


【解决方案1】:

我认为您根本不需要 Apache Commons。系统属性os.version 包含内部操作系统版本(os.name 是人类可读的名称,将包含Windows 后跟更具体的信息,例如Vista)。我认为在 Windows 7 上,如果你调用 System.getProperty("os.version"),你会得到 6.1,而 Vista 是 6.0。假设他们没有改变约定,如果存在点(使用String.substring()String.indexOf('.')),您可以尝试将部分带到第一个点,使用Integer.parseInt() 将子字符串解析为整数并比较是否结果值至少为6

【讨论】:

    【解决方案2】:

    我最终做的是:

    public boolean isVistaOrHigher()
    {
       return !SystemUtils.IS_OS_WINDOWS_XP && !SystemUtils.IS_OS_WINDOWS_98 && ... ;
    }
    

    【讨论】:

    • 这假设您在 Windows 上运行。查看 SystemUtils 的源代码,它只是对 os.version 和 os.name 进行简单检查。这可能是你想要的SystemUtils.IS_OS_WINDOWS && Double.parseDouble(SystemUtils.OS_VERSION) >= 6.0。我至少会将 SystemUtils.IS_OS_WINDOWS 添加到您的检查中。
    • @Patrick 实际上,我首先做了一个 IS_OS_WINDOWS,因为我们也支持 Mac OS,我只是没有添加它,因为不是每个人都需要它,我觉得它只是给答案增加了更多噪音;)好抓住虽然:)
    猜你喜欢
    • 2013-09-02
    • 2010-09-23
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多