首页 > 解决方案 > 如何获取cpu、gpu和os全名

问题描述

是否有可能在Java中获得CPU、GPU和OS的全称?

例如:

标签: javawindows

解决方案


System.getProperty("os.arch")给你类似的东西x86_64

System.getProperty("os.name")给你类似的东西Mac OS X

System.getProperty("sun.cpu.endian")得到你little(这是一个非标准的属性名称)。

除此之外,答案大多是“不,你不能那样做”。

您可以做的是检查您在哪个操作系统上,并启动操作系统和体系结构特定工具,通过本机接口 (JNI) 或使用ProcessBuilder执行已知默认安装在您所在操作系统上的命令行工具以获取此信息。

例如,如果您知道您正在安装一些 posix(例如,mac 或 linux),您可以使用 processbuilder 来运行/usr/bin/uname -a,这会得到类似的东西:

Darwin YourSystemName.local 19.5.0 Darwin Kernel Version 19.5.0: Tue May 26 20:41:44 PDT 2020; root:xnu-6153.121.2~2/RELEASE_X86_64 x86_64

你可以跑去/usr/sbin/sysctl -n machdep.cpu.brand_string得到类似的东西Intel(R) Core(TM) i7-1060NG7 CPU @ 1.20GHz

但是,/usr/sbin/sysctl可能不在您的系统上。它绝对不会出现在 Windows 机器上,它可能不会出现在各种风格的 linux 上。

尝试测试这样的设置将非常棘手。您需要数百个部署(您希望支持的所有版本的 linux、各种 mac 版本、一堆 Windows 版本等等)。

换句话说,这是一个相当复杂的项目!

我会考虑使用处理所有这些的库,例如OSHI。OSHI 是一个免费的基于JNA(本机)的 Java 操作系统和硬件信息库。


推荐阅读