[英]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
}
它可以在我的Windows 7機器上運行(誠然是一個32位的;我現在無法訪問64位的機器)。
也許你的JRE早於Windows 7,這個名字被烘焙了嗎? 您使用的是哪個版本的JRE? 我建議更新到最新版本並再試一次。 不可否認,如果JRE 確實將操作系統名稱硬編碼到其中,那將是非常討厭的,但是發生了一些奇怪的事情。
使用JAVA-6,我試過它工作正常,否則你的Windows正在使用Vista模式處理JVM。
最近遇到了同樣的問題。 由於錯誤6819886評估說明狀態,您可以檢查os.version屬性以區分Windows 7和Windows 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.