2012-08-29 48 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。

相關問題