System.getProperty("os.name")和System.getProperty("os.version")返回windows 11机器中的windows 10、10.0
如果有人知道Java代码可以在不使用任何命令的情况下获得Windows版本,请在这里帮助或附加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"));
}
}
产出:
os name = Windows 10
os version = 10.0
发布于 2022-06-18 11:27:23
在Java11 (11.0.15)和Java 17 (17.0.3)上,System.getProperty("os.name")
返回Windows 11
,但是"os.version"
仍然报告10.0
,因为这实际上是微软(仍然)在Windows 11上使用的版本。
例如,Windows系统信息报告:
操作系统名称Microsoft Windows 11 Pro
版本10.0.22000 Build 22000
这类似于屏幕截图中显示的内容。
遗憾的是,Java8 (1.8.0_332)仍然报告Windows 10
。我已经查看了Java 8中可用的系统属性和环境变量,但是似乎没有一个属性或环境变量允许您检测您使用的是Windows 11而不是Windows 10。
JDK-8293124更新操作系统检测代码以识别Windows 11的backports列表表明,这应该在Java8UPDATE 8u311、8u321和8u331中得到修正。但是,考虑到我仍然在1.8.0_332 (Temurin)和1.8.0_345 (Temurin)中得到了旧的结果,这个修复要么被恢复,要么只在特定的构建(例如Oracle)中可用。它还列出了--还没有发布-- openjdk8u362,所以这个修复程序可能会出现在1.8.0_362中。
https://stackoverflow.com/questions/72668838
复制相似问题