2012-05-30 218 views
9

最近我在一个品牌的移动新机的64位Windows 7。但是,当我运行这段代码,得到不正确的操作系统名称不正确的操作系统名称在Java中获得

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

输出谈到:

OS Name = Windows Vista 

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

在此先感谢。

+1

也许Windows在“Vista模式”(兼容模式)下运行您的JVM? – Hassan

+0

由于我们的项目依赖关系,我正在使用java.version = 1.5.0_16。 – Kishore

回答

12

您可能正在使用旧版本的Java。因为这是一个已知的bug(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 
    } 
+0

那么在使用save java版本时,这个问题的解决方案是什么? – Kishore

+0

请看编辑。 –

+0

谢谢@Gaara。我去做。 – Kishore

3

它适用于我的Windows 7计算机(公认是32位计算机;我目前无法访问64位计算机)。

也许你的JRE早于Windows 7,并且名字被烘焙到它?你使用的是哪个版本的JRE?我会建议更新到最新版本并再次尝试。不可否认的是,如果JRE 确实的操作系统名称已经硬编码进去,但是却发生了一些奇怪的事情,这真是令人讨厌。

+0

可能的,但我认为这不太可能。 – Hassan

+0

由于我们的项目依赖关系,我正在使用java.version = 1.5.0_16。 – Kishore

2

使用JAVA-6,我试过它的工作正常,否则你的Windows使用Vista模式对待JVM。

1

最近出现了同样的问题。正如bug 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只是为了使这项工作。

相关问题