Java 如何获取cpu、gpu和操作系统的全名

Java 如何获取cpu、gpu和操作系统的全名,java,windows,Java,Windows,有可能在Java中获得CPU、GPU和操作系统的全名吗 例如: CPU:Intel(R)Core(TM)i3-8100 CPU@3.60GHZ 3.60GHZ GPU:NVIDIA GeForce GTX 980 Ti 6GB 操作系统:windows10prox642004 我最近使用了OSHI api,它为您提供了许多api,用于获取与CPU信息和操作系统相关的详细信息 另一种选择是Hyperic的SIGAR API。System.getProperty(“os.arch”)提供类似于x8

有可能在Java中获得CPU、GPU和操作系统的全名吗

例如:

  • CPU:
    Intel(R)Core(TM)i3-8100 CPU@3.60GHZ 3.60GHZ
  • GPU:
    NVIDIA GeForce GTX 980 Ti 6GB
  • 操作系统:
    windows10prox642004

我最近使用了OSHI api,它为您提供了许多api,用于获取与CPU信息和操作系统相关的详细信息

另一种选择是Hyperic的SIGAR API。

System.getProperty(“os.arch”)
提供类似于
x86\u 64
的功能

System.getProperty(“os.name”)
为您提供类似于
MacOSX
的功能

System.getProperty(“sun.cpu.endian”)
获取
little
(这是一个非标准属性名)

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

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

例如,如果您知道您正在进行某些posix安装(例如,mac或linux),则可以使用processbuilder运行
/usr/bin/uname-a
,这会使您获得如下信息:

Darwin YourSystemName.local 19.5.0达尔文内核版本19.5.0:Tue May 26 20:41:44 PDT 2020;根目录:xnu-6153.121.2~2/RELEASE_X86_64 X86_64

您可以运行
/usr/sbin/sysctl-n machdep.cpu.brand_string
以获得类似
英特尔(R)核心(TM)i7-1060NG7 cpu@1.20GHz

但是,
/usr/sbin/sysctl
可能不在您的系统上。它肯定不会出现在windows设备上,也可能不会出现在各种风格的linux上

尝试测试这样的设置将是非常棘手的。您需要数百种部署(您想要支持的所有linux版本、各种mac版本、一系列windows版本,等等)

换句话说,相当复杂的项目


我会考虑使用一个负责所有这些的图书馆,比如。OSHI是一个基于Java的免费(本机)操作系统和硬件信息库。

您能告诉我如何使用OSHI库实现这一点吗?我在网上找不到关于它的任何东西。。单击链接,阅读文档?如果文档中有你不理解的特定内容,请打开一个新问题。@krystek尝试此链接它有基本的api用法和与你的问题相关的信息。那篇博文已经有10多年的历史了。您回复的答案中的链接指向同一个项目。@Daniel Widdis。。只是得到了一些api信息的帮助,这些信息会让krystek开始做一些事情。除了代码不起作用之外<代码>getProcessors()在2015年发生了更改。更好的链接是上面答案中项目主页的链接,它指导用户使用示例。