2012-05-30 342 views
9

最近我在一個品牌的移動新機的64位Windows 7。但是,當我運行這段代碼,得到不正確的操作系統名稱不正確的操作系統名稱在Java中獲得

String osName = System.getProperty("os.name"); 
System.out.println("OS Name = " + osName); 

輸出談到:

OS Name = Windows Vista 

任何想法,我的代碼或系統有什麼問題?

在此先感謝。

+1

也許Windows在「Vista模式」(兼容模式)下運行您的JVM? – Hassan

+0

由於我們的項目依賴關係,我正在使用java.version = 1.5.0_16。 – Kishore

回答

12

您可能正在使用舊版本的Java。因爲這是一個已知的bug(bug_id = 6819886),已在新版本中修復。 Kindly read this for further details


的情況下,可能的解決方法對於這一點,你無法升級您的Java版本:

String osName = System.getProperty("os.name"); 
    if (osName.equals("Windows XP") || osName.equals("Windows Vista")) 
    { 
     //do something and remember to put in all the names in the above if list. I just added two for example,it will have to include all like Windows NT,ME,95,etc. 
    } 
    else 
    { 
     //the block that will be accessible for Windows 7 
    } 
+0

那麼在使用save java版本時,這個問題的解決方案是什麼? – Kishore

+0

請看編輯。 –

+0

謝謝@Gaara。我去做。 – Kishore

3

它適用於我的Windows 7計算機(公認是32位計算機;我目前無法訪問64位計算機)。

也許你的JRE早於Windows 7,並且名字被烘焙到它?你使用的是哪個版本的JRE?我會建議更新到最新版本並再次嘗試。不可否認的是,如果JRE 確實的操作系統名稱已經硬編碼進去,但是卻發生了一些奇怪的事情,這真是令人討厭。

+0

可能的,但我認爲這不太可能。 – Hassan

+0

由於我們的項目依賴關係,我正在使用java.version = 1.5.0_16。 – Kishore

2

使用JAVA-6,我試過它的工作正常,否則你的Windows使用Vista模式對待JVM。

1

最近出現了同樣的問題。正如bug 6819886評估說明所述,您可以檢查os.version屬性以區分Windows 7Windows Vista在這種情況下。

版本的Windows 7是6.1和Windows Vista的是6

String osVersion = System.getProperty("os.version"); 
if("6.1".equals(osVersion)){ 
    System.out.println("OS is Windows 7"); 
} 

這樣你就不必升級到最新的Java只是爲了使這項工作。

相關問題