适用于 Windows 10 的 Java "os.name"?

标签 java operating-system jvm windows-10 getproperty

在Java中,我们可以通过查看os.name的属性值来知道底层操作系统的名称:System.getProperty("os.name") .

对于每个版本的 Windows,它总是返回操作系统的确切名称:Windows XP 表示 XP,Windows Vista 表示 Vista,Windows 7 代表 7,Windows 8.1 代表 8.1,依此类推...

问题是:我刚刚使用发布的 Microsoft 更新程序将我的 Windows 8.1 更新到了 Windows 10,而且这个属性似乎仍然存在 Windows 8.1:

public class OSTest {
  public static void main(String[] args) {
    System.out.println(System.getProperty("os.name"));
  }
}

如何为此创建解决方法?而且,有谁知道如果安装新的 Windows 10 副本,这个问题是否仍然存在 - 也就是说,这个错误是由 Microsoft 自动更新程序引起的 - ?

最佳答案

这是一个已知问题 JDK-8066504这已在即将发布的 Java 8 更新 60 中修复。

原因是GetVersionEx自 Windows 8.1 以来,函数的行为发生了变化。

有多种可能的解决方法,请参阅 MSDN article .

最简单的就是执行cmd.exe/c ver

另一种是查看其中一个系统文件的版本信息,例如kernel32.dll.

关于适用于 Windows 10 的 Java "os.name"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31909107/

相关文章:

java - 为什么答案会是 "GOOD"?

java - 为什么这个 Java 程序没有显示错误?

windows - 进程间通信(IPC)的例子

Java 服务在 Linux 上被终止。需要帮助来理解行为

java - Java 中 vararg 的性能影响

java - javafx HTML 编辑器中的表格工具

java - Splunk 和 JMeter 百分位数的差异

c# - 为 WinForm 应用程序分配一个控制台

operating-system - 我可以从 IP 地址获得什么信息?

Java: 'tenured'内存与permgen相同吗?