最近我换了一台全新的64位Windows 7机器。但当我运行这段代码时,却得到了错误的操作系统名称。
String osName = System.getProperty("os.name");
System.out.println("OS Name = " + osName);
输出结果为:
OS Name = Windows Vista
有什么想法,我的代码或系统出了什么问题吗?
提前感谢。
最近我换了一台全新的64位Windows 7机器。但当我运行这段代码时,却得到了错误的操作系统名称。
String osName = System.getProperty("os.name");
System.out.println("OS Name = " + osName);
OS Name = Windows Vista
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确实将操作系统名称硬编码进去,那么这确实相当糟糕,但更奇怪的事情也发生过。
我最近遇到了同样的问题。如错误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");
}
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);
}