Java win32库/ api

gho*_*g74 3 java

嗨是否有一个合适的Java win32库,例如,显示当前进程,找出进程已经采取的端口号等等?(或类似WMI库?)谢谢

Cer*_*ber 6

看看JNA.它是一种100%纯Java方式与本机代码进行通信.

他们有一个名为Platform.jar的辅助库,它包含一些最常见的本机API.

虽然我知道它是什么,但我还没有使用过平台,所以我无法指出你在哪里可以找到你想要的东西.但从我的全球JNA经验来看,这应该有所帮助!

(答案结束)


对于那些想知道它是如何工作的人(它在他们的主页上有解释)......好吧,让我们说他们已经为你处理了原生部分,这样你就可以专注于java端.主librairy(jna.jar)捆绑了许多本机库(.dll,.so,.dylib)用于主要的os /架构和java端来操作它们(这解释了jar的大小:~1 Mo).

当您想要使用多个OS lib名称"A.dll","A.so"或"libA.dylib"时,其中包含以下内容:

int doSomething(char* aString ,byte* aByteArray, long* arraySize)
Run Code Online (Sandbox Code Playgroud)

只需编写以下内容,JNA将完成剩下的工作:

public class LibAWrapper{
  //tell JNA to link with native library
  Native.register("A");
  //Type mapping in java 
  public native int doSomething(String aString ,byte[] aByteArray, NativeLongByReference arraySize)
}
Run Code Online (Sandbox Code Playgroud)

并使用它:

new LibAWrapper().doSomething("Hello World",....
Run Code Online (Sandbox Code Playgroud)

这意味着如果Platform.jar不适合您的需求,您应该很容易在本机库周围编写一个包装器