2008-11-07 57 views
5

我偶然发现了关于System.getProperty("os.name")的一些令人费解的事情。根据a Java bug on the matterthe Java 5 release notes(搜索“os.name”),Java早期版本的“longhorn”版本中存在一个bug,应该在v5发行版本10中修复。为什么在Vista上的Java报告它在XP上?

但是,在我的Vista SP1盒子上 - 使用v5 release 15和v6 release 6 - System.getProperty("os.name")返回“Windows XP”。更多System.getProperty("os.version")返回“5.1”。尽管通过Google我找不到有关此问题的任何信息。这让我怀疑这是否与我的Vista设置有些奇怪。我曾尝试从测试C程序调用GetVersionEx()API函数,并返回主要版本6,次要0(正如我对Vista安装期望的那样)。

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

+0

这帮助我理清了为什么我们的产品返回了错误的值。 java错误,在6u14中修复...太糟糕了,我们仍然在运输6u13 = D – GreenKiwi 2010-08-19 01:07:08

回答

10

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

0

Windows 2000的实际Windows版本号为5.0。 Windows XP是5.1。 Vista据说6.0,所以你的测试程序运行正常。对我来说,Java听起来肯定是错误的。

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

+0

为什么我需要改变行为的答案很简单:符号链接。它们存在于Vista中,而不是XP中) – 2008-11-07 23:26:55

+0

检查Martin的答案,它非常好! – 2009-01-18 19:22:42

相关问题