2008-11-07 54 views
5

我偶然發現了關於System.getProperty("os.name")的一些令人費解的事情。根據a Java bug on the matterthe Java 5 release notes(搜索「os.name」),Java早期版本的「longhorn」版本中存在一個bug,應該在v5發行版本10中修復。爲什麼在Vista上的Java報告它在XP上?

但是,在我的Vista SP1盒子上 - 使用v5 release 15和v6 release 6 - System.getProperty("os.name")返回「Windows XP」。更多System.getProperty("os.version")返回「5.1」。儘管通過Google我找不到有關此問題的任何信息。這讓我懷疑這是否與我的Vista設置有些奇怪。我曾嘗試從測試C程序調用GetVersionEx()API函數,並返回主要版本6,次要0(正如我對Vista安裝期望的那樣)。

有沒有其他人遇到過這個問題,知道一個修復或者有什麼建議我可以在不使用JNI的情況下解決它?

+0

這幫助我理清了爲什麼我們的產品返回了錯誤的值。 java錯誤,在6u14中修復...太糟糕了,我們仍然在運輸6u13 = D – GreenKiwi 2010-08-19 01:07:08

回答

10

Java可能運行在XP兼容模式下。在這種情況下,Vista會僞造Windows版本號,從而使Java相信它可以在XP上運行。檢查可執行文件的兼容性選項卡。

0

Windows 2000的實際Windows版本號爲5.0。 Windows XP是5.1。 Vista據說6.0,所以你的測試程序運行正常。對我來說,Java聽起來肯定是錯誤的。

您可能不得不依賴JNI才能得到正確的答案。我假設你已經問過自己爲什麼需要根據你使用XP還是Vista來改變程序的行爲。

+0

爲什麼我需要改變行爲的答案很簡單:符號鏈接。它們存在於Vista中,而不是XP中) – 2008-11-07 23:26:55

+0

檢查Martin的答案,它非常好! – 2009-01-18 19:22:42

相關問題