System.getProperty(“os.name”)返回;视窗XP;在Windows Vista上使用javaw.exe时,但java.exe有效

System.getProperty(“os.name”)返回;视窗XP;在Windows Vista上使用javaw.exe时,但java.exe有效,java,operating-system,windows-xp,windows-vista,javaw,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(确定) C:\ProgramFiles\Java\jre6\bin\Java.exe-兼容模式“W

我有以下问题:

我想通过Windows Vista计算机上的
System.getProperty(“OS.name”)
System.getProperty(“OS.version”)
获取操作系统名称

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

Java报告如下:

C:\Program Files\Java\jre6\bin\Java.exe-无兼容模式-->Windows Vista/6.0(确定)
C:\ProgramFiles\Java\jre6\bin\Java.exe-兼容模式“Windows XP”-->Windows XP/5.1(确定)
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上使用Java1.6.0_34(x86)


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

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

app compat版本lie通常用于由于逻辑中断而在较新版本的Windows上表现不佳的程序,例如:

if(Windows.Version != WindowsXP)
  abort("Windows 2000 is too old!");
此逻辑在Windows Vista上失败,导致java无法工作。因此,窗户是用来让它工作的。当它后来作为System.getProperty(“os.name”)调用的一部分说“我是什么版本”时,它就错了

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