簡體   English   中英

Java中的操作系統名稱不正確

[英]Incorrect OS name getting in Java

最近我搬到了一台全新的64位Windows 7機器上。但是當我運行這段代碼時,得到了錯誤的操作系統名稱

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

輸出來了:

OS Name = Windows Vista

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

提前致謝。

您可能正在使用舊版本的Java。 因為這是一個已知錯誤(bug_id = 6819886)已在新版本中修復。 請閱讀此內容以獲取更多詳細信息


如果您無法升級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
    }

報告了一個關於此的錯誤:

http://bugs.sun.com/view_bug.do?bug_id=6819886

不確定它是否在較新版本的Java中修復,因為我沒有Java 7。

它可以在我的Windows 7機器上運行(誠然是一個32位的;我現在無法訪問64位的機器)。

也許你的JRE早於Windows 7,這個名字被烘焙了嗎? 您使用的是哪個版本的JRE? 我建議更新到最新版本並再試一次。 不可否認,如果JRE 確實將操作系統名稱硬編碼到其中,那將是非常討厭的,但是發生了一些奇怪的事情。

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

最近遇到了同樣的問題。 由於錯誤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就可以使其工作。

String WinVer = System.getProperty("os.name"); 
if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("95")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("98")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("ME")){ System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("3.51")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("NT 4.0")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2000")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("XP")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("7")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("8")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("8.1")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("10")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2003")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("Vista")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2008")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2008 R2")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2012")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2012 R2")){System.out.println(WinVer); 
} else if (WinVer.toLowerCase().contains("windows") && WinVer.toLowerCase().contains("2016")){System.out.println(WinVer); 
}

Win 7 Test : Windows 7

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM