【问题标题】:System.getProperty("os.name") returns "Windows XP" on a Windows Vista when using javaw.exe, but java.exe worksSystem.getProperty("os.name") 在 Windows Vista 上使用 javaw.exe 时返回“Windows XP”,但 java.exe 有效
【发布时间】:2012-08-29 12:24:19
【问题描述】:

我有以下问题:

我想在 Windows Vista 机器上通过System.getProperty("os.name")System.getProperty("os.version") 获取操作系统名称。

我已经检查了 java 可执行文件的兼容模式设置。

Java 报告如下:

C:\Program Files\Java\jre6\bin\java.exe - 无兼容模式 --> Windows Vista / 6.0 (OK)
C:\Program Files\Java\jre6\bin\java.exe - 兼容模式“Windows XP”-> Windows XP / 5.1 (OK)
C:\Program Files\Java\jre6\bin\ javaw.exe - 无兼容模式 --> Windows XP / 5.1(错误)
C:\Program Files\Java\jre6\bin\javaw.exe - 兼容模式“Windows XP” --> Windows XP / 5.1 (OK)

我在 32 位 vista 上使用 java 1.6.0_34 (x86)。

有人知道这是什么原因吗?

【问题讨论】:

    标签: java operating-system windows-xp windows-vista javaw


    【解决方案1】:

    您很可能在兼容模式下运行 java。这可能是因为您决定手动执行此操作(例如,通过右键单击 java > 属性 > 兼容模式),或者因为 Windows 出于应用程序兼容的原因决定对 Java 撒谎。

    app-compat 版本的谎言通常用于由于逻辑错误而在较新版本的 Windows 上表现不佳的程序,例如:

    if(Windows.Version != WindowsXP)
      abort("Windows 2000 is too old!");
    

    此逻辑在 Windows Vista 上失败,使 java 无法工作。因此,Windows 对它撒谎以使其正常工作。当它后来说“我是什么版本”作为 System.getProperty("os.name") 调用的一部分时,它就会出错。

    要解决此问题,请检查您是否安装了最新版本的 Java。

    【讨论】:

      猜你喜欢
      • 2015-09-03
      • 1970-01-01
      • 2014-04-14
      • 2013-04-30
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多