Java中的操作系统名称不正确

时间:2012-05-30 05:58:56

标签: java windows-7

最近我搬了一台全新的64位Windows 7机器。但是当我运行这段代码时,得到了错误的操作系统名称

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

输出结果:

OS Name = Windows Vista

任何想法,我的代码或系统有什么问题?

先谢谢。

6 个答案:

答案 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)

有关于此的报告错误:

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

不确定它是否在较新版本的Java中修复,因为我没有Java 7。

答案 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);

[Referans] [1] [1]:https://i.stack.imgur.com/JKOvS.png