System.getProperty("os.name") 和 System.getProperty("os.version") 在 Windows 11 计算机中返回 Windows 10、10.0
如果有人知道无需使用任何命令即可获取 Windows 版本的 Java 代码,请在此提供帮助或附上 Java 代码。
openjdk version "1.8.0_322"
OpenJDK Runtime Environment Corretto-8.322.06.1 (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM Corretto-8.322.06.1 (build 25.322-b06, mixed mode)
class Demo
{
public static void main(String g[])
{
System.out.println(" os name = "+System.getProperty("os.name"));
System.out.println(" os version = "+System.getProperty("os.version"));
}
}
output:
os name = Windows 10
os version = 10.0
在 Java 11 (11.0.15) 和 Java 17 (17.0.3) 上,System.getProperty("os.name")
回报Windows 11
, but "os.version"
仍然报道10.0
,因为这实际上是 Microsoft(仍然)用于 Windows 11 的版本。
例如,Windows 系统信息报告:
操作系统名称 Microsoft Windows 11 Pro
版本10.0.22000 建造 22000
这与您的屏幕截图中显示的类似。
不幸的是,Java 8 (1.8.0_332) 仍然报告Windows 10
。我查看了 Java 8 中可用的系统属性和环境变量,但似乎没有属性或环境变量可以让您检测到您正在使用 Windows 11 而不是 Windows 10。
向后移植的列表JDK-8293124 更新操作系统检测代码以识别 Windows 11建议在 Java 8 更新 8u311、8u321 和 8u331 中修复此问题。但鉴于我在 1.8.0_332 (Temurin) 和 1.8.0_345 (Temurin) 中仍然得到旧结果,此修复要么已恢复,要么仅在特定版本(例如 Oracle 的)中可用。它还列出了 - 尚未发布 - openjdk8u362,所以这个修复可能会在 1.8.0_362 中发布。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)