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

为什么Vista上的Java报告它在XP上?,java,windows-vista,Java,Windows Vista,关于System.getProperty(“os.name”),我偶然发现了一些真正令人费解的东西。根据and(搜索“os.name”)的说法,早期版本Vista的“longhorn”在Java中有一个bug,应该在v5版本10中修复 但是,在我的Vista SP1框中-同时使用v5版本15和v6版本6-System.getProperty(“os.name”)返回“Windows XP”。进一步System.getProperty(“os.version”)返回“5.1”。不过,我在谷歌上找不

关于
System.getProperty(“os.name”)
,我偶然发现了一些真正令人费解的东西。根据and(搜索“os.name”)的说法,早期版本Vista的“longhorn”在Java中有一个bug,应该在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的情况下解决这个问题有什么建议?

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


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

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

我为什么需要改变行为的答案很简单:符号链接。它们存在于Vista中,而不存在于XP中;)你是个天才,先生!:)我在兼容模式下运行Eclipse,因为Vista中的自动滚动功能使Eclipse几乎无法使用。因此,它也在兼容模式下运行我从Eclipse启动的任何Java代码。它报告Vista在兼容性模式关闭的情况下很好:这帮助我找出了产品返回错误值的原因。java错误,在6u14中修复。。。太糟糕了,我们仍在装运6u13=D