0

我有以下问题:

我想通过 Windows Vista 机器获取操作系统System.getProperty("os.name")名称System.getProperty("os.version")

我检查了 java 可执行文件的兼容模式设置。

Java 报告如下:

C:\Program Files\Java\jre6\bin\java.exe - 无兼容模式 --> Windows Vista / 6.0 (OK)
C:\Program Files\Java\jre6\bin\java.exe - 兼容模式“Windows XP " --> Windows XP / 5.1 (OK)
C:\Program Files\Java\jre6\bin\javaw.exe - 无兼容模式 --> Windows XP / 5.1 (错误)
C:\Program Files\Java\jre6\ bin\javaw.exe - 兼容模式 "Windows XP" --> Windows XP / 5.1 (OK)

我在 32 位 vista 上使用 java 1.6.0_34 (x86)。

有人知道这可能是什么原因吗?

4

1 回答 1

0

您很可能在兼容模式下运行 java。这可能是因为您决定手动执行此操作(例如,通过右键单击 java > 属性 > 兼容模式),或者因为 Windows 出于应用程序兼容的原因决定对 Java 撒谎。

app-compat 版本的谎言通常用于由于逻辑错误而在较新版本的 Windows 上表现不佳的程序,例如:

if(Windows.Version != WindowsXP)
  abort("Windows 2000 is too old!");

此逻辑在 Windows Vista 上失败,使 java 无法工作。因此,Windows 对它撒谎以使其正常工作。当它后来说“我是什么版本”作为 System.getProperty("os.name") 调用的一部分时,它因此出错了。

要解决此问题,请检查您是否安装了最新版本的 Java。

于 2012-09-01T23:20:34.740 回答