我已经将我的PC从Windows10升级到了Windows11,当我使用Java 17运行以下Windows 10代码时,它仍然返回Windows 10
System.getSystemProperty("os.name")为什么操作系统版本没有正确更新?我的个人电脑上有什么位置是从这里提取信息的吗?
如果我运行systeminfo命令并检查第2行,即"OS Name: ",它正确地报告Microsoft Windows 11 Pro。
即使是产生错误操作系统版本的Apache commons-lang3库属性也是如此。
请注意,这个问题只发生在较早版本的Java 19上,但是最新的os.name运行得很好,并且返回带有os.name属性的Windows11。对于旧的Java版本来说,修复这个问题最可靠的方法是什么?解析systeminfo?为什么旧的Java版本可以解析一些环境变量或注册表项而不识别Windows 11呢?
发布于 2022-06-26 13:43:52
为什么?只有设置为“os.name”的实现者才能肯定地告诉您,但可能的答案是,它们只是在接受操作系统返回的值。
对于Windows,适当的值是列在这里。请注意,有几个系统,具有不同的营销名称,都报告自己为"10.0“。
Operating system Version number
Windows 11 10.0*
Windows 10 10.0*
Windows Server 2022 10.0*
Windows Server 2019 10.0*
Windows Server 2016 10.0*这里的根本问题是,软件使用的软件版本号不一定完全等同于营销部门想要在系统输入的盒子上写什么。
Microsoft建议不要将应用程序代码基于特定的版本号。
https://stackoverflow.com/questions/72760795
复制相似问题