9

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

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

输出来了:

OS Name = Windows Vista

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

提前致谢。

4

6 回答 6

12

您可能使用的是较旧版本的 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
    }
于 2012-05-30T06:05:28.680 回答
4

有一个关于此的错误报告:

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

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

于 2012-05-30T06:10:39.100 回答
3

它适用于我的 Windows 7 机器(诚然是 32 位机器;我现在无法访问 64 位机器)。

也许您的 JRE 早于 Windows 7,并且名称已融入其中?您使用的是哪个版本的 JRE?我建议更新到最新版本并重试。诚然,如果 JRE确实将操作系统名称硬编码到其中,那是非常令人讨厌的,但是发生了奇怪的事情。

于 2012-05-30T06:02:54.453 回答
2

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

于 2012-05-30T06:16:39.033 回答
1

最近遇到了同样的问题。正如错误 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。

于 2013-09-17T10:04:05.723 回答
0
    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);
    }
  1. 项目清单
于 2019-07-26T13:00:58.387 回答