使用javaw.exe时,System.getProperty(“os.name”)在Windows Vista上返回“Windows XP”,但java.exe正常工作

时间:2012-08-29 12:24:20

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

我有以下问题:

我想在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(确定)

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

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

1 个答案:

答案 0 :(得分:0)

最有可能的是你在兼容模式下运行java。这可能是因为您决定手动执行此操作(例如,通过右键单击java>属性>兼容模式),或者因为Windows因app-compat原因而决定欺骗Java。

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

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

此逻辑在Windows Vista上失败,阻止java工作。因此,Windows要求它保持工作。当它后来说“我是什么版本”作为System.getProperty(“os.name”)调用的一部分时,它就会错误。

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