2012-08-29 51 views
0

我有以下问题:System.getProperty( “os.name”)返回 “Windows XP中的” 在Windows Vista中使用javaw.exe的时候,却java.exe的作品

我想通过获得OS名在Windows Vista计算机上的System.getProperty("os.name")System.getProperty("os.version")

我检查了java可执行文件的兼容性模式设置。 \ Program Files文件\的Java:

C: - - 不兼容模式>的Windows Vista/6.0(OK)
Ç\ Program Files文件\的Java \ JRE6 \ BIN \ java.exe的以下

的Java报告\ jre6 \ bin \ java.exe - 兼容模式“Windows XP” - > Windows XP/5.1(OK)
C:\ Program Files \ Java \ jre6 \ bin \ javaw.exe - 没有兼容模式 - > Windows XP/5.1(WRONG)
C:\ Program Files \ Java \ jre6 \ bin \ javaw.exe - 兼容模式“Windows XP” - > Windows XP/5.1(OK)

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

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

回答

0

最有可能你在兼容模式下运行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。

相关问题