最近我搬了一台全新的64位Windows 7机器。但是当我运行这段代码时,得到了错误的操作系统名称
String osName = System.getProperty("os.name");
System.out.println("OS Name = " + osName);
输出结果:
OS Name = Windows Vista
任何想法,我的代码或系统有什么问题?
先谢谢。
答案 0 :(得分:12)
您可能正在使用旧版本的Java。因为这是一个已知错误(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
}
答案 1 :(得分:4)
答案 2 :(得分:3)
它可以在我的Windows 7机器上运行(诚然是一个32位的机器;我现在无法访问64位机器。)
也许你的JRE早于Windows 7,并且它的名字被烘焙了?您使用的是哪个版本的JRE?我建议更新到最新版本并再试一次。不可否认,如果JRE 将操作系统名称硬编码到其中,那将是非常讨厌的,但是发生了奇怪的事情。
答案 3 :(得分:2)
使用JAVA-6,我试过它的工作正常,否则你的Windows正在使用Vista模式处理JVM。
答案 4 :(得分:1)
最近遇到了同样的问题。正如bug 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就可以实现这一目的。
答案 5 :(得分:0)
String WinVer = System.getProperty(“ os.name”);
如果(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 95”)){
System.out.println(WinVer);
}否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 98”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ ME”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 3.51”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ NT 4.0”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2000”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ XP”)){
System.out.println(WinVer);
} 否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2003”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ Vista”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2008”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2008 R2”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2012”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2012 R2”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 7”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 8”)){
System.out.println(WinVer);
}
否则if(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 8.1”)){
System.out.println(WinVer);
}
否则(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 10”)){
System.out.println(WinVer);
}
否则if(WinVer.toLowerCase()。contains(“ windows”)&& WinVer.toLowerCase()。contains(“ 2016”)){
System.out.println(WinVer);