有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么Vista上的Java报告它在XP上?

我偶然发现了一些关于System.getProperty("os.name")的真正令人困惑的事情。根据a Java bug on the matterthe Java 5 release notes(搜索“os.name”),Java中有一个bug,早期的Vista“longhorn”版本应该在v5版本10中修复

但是,在我的Vista SP1框中-同时使用v5版本15和v6版本6-System.getProperty("os.name")返回“Windows XP”。进一步System.getProperty("os.version")返回“5.1”。不过,我在谷歌上找不到任何与这个问题相关的信息。这让我怀疑我的Vista设置是否有些奇怪。我尝试从测试C程序调用GetVersionEx()API函数,它返回主版本6,次版本0(正如我在Vista安装中所期望的那样)

有没有其他人遇到过这个问题,知道修复方法,或者对我如何在不使用JNI的情况下解决它有什么建议


共 (2) 个答案

  1. # 1 楼答案

    可能是Java在XP兼容模式下运行。在这种情况下,Vista会伪造windows版本号,让Java相信它在XP上运行。检查可执行文件的兼容性选项卡

  2. # 2 楼答案

    windows 2000的实际windows版本号为5.0。Windows XP是5.1。Vista应该是6.0,所以你的测试程序运行正常。在我看来,Java肯定是弄错了

    你可能需要依赖JNI才能得到正确的答案。我假设你已经问过自己,为什么你可能需要根据你使用的是XP还是Vista来改变程序的行为