我有以下问题:
我想在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)。
有人知道这可能是什么原因吗?
答案 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。