首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >System.getProperty("os.name")和System.getProperty("os.version")返回windows 11机器中的windows 10、10.0

System.getProperty("os.name")和System.getProperty("os.version")返回windows 11机器中的windows 10、10.0
EN

Stack Overflow用户
提问于 2022-06-18 11:20:58
回答 1查看 372关注 0票数 2

System.getProperty("os.name")和System.getProperty("os.version")返回windows 11机器中的windows 10、10.0

如果有人知道Java代码可以在不使用任何命令的情况下获得Windows版本,请在这里帮助或附加Java代码。

代码语言:javascript
复制
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)
代码语言:javascript
复制
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"));
    }
}

产出:

代码语言:javascript
复制
os name = Windows 10
os version = 10.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72668838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档