可以在Java中访问Win32_OperatingSystem类吗?

问题描述 投票:0回答:1

我想知道是否可以在Java代码中访问Win32_OperatingSystem类,我看过VB或C#的示例,但我还没有看到Java中的任何示例

java wmi
1个回答
0
投票

这是可能的,但在 Java 中并不像在其他语言中那么容易。

一些语言的标准库中包含所谓的 FFI(外部函数接口)。例如,在 Python 中,您有 ctypes/cdll 模块。使用它,您可以打开任何DLL并调用任何函数。你不需要写任何C代码,你只需要写一些Python,就足够了。

在Java中,传统的方法是通过JNI(Java Native Interface)。但情况要复杂得多。为了保持简短,您必须:

  1. 创建 Java 类并声明本机方法
  2. 用C语言编写与声明的本地方法相对应的包装函数;这些 C 函数必须加载 DLL 并调用所需的实际函数。
  3. 将用 C 编写的包装器编译成 Java 能够加载的 DLL

一些第三方库试图简化这个复杂的过程,使其像 Python 和其他拥有良好 FFI 库的语言一样简单。例如,JNA(Java 本机访问)。但它并没有包含在Java的标准库中。

Java 语言实现者都知道 JNI 陈旧、缓慢且复杂。一个新的库正在开发中,并可作为最新版本的 Java 中的预览功能使用。一旦完全稳定,它最终将被包含在标准库中,但目前情况并非如此。您必须等待,或者尝试使用实验性功能,这些功能可能会在最终版本发布之前发生变化。

所以你对整个故事有了一个大致的了解。

现在,特别是对于 win32,可能已经有可用的 JNI 包装器。你应该搜索一下。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.