是否有合适的Java win32库,例如,显示当前进程,查找进程已采用的端口号等?(或者像WMI库这样的东西?)
发布于 2010-12-24 21:55:48
看看JNA吧。这是一种100%纯java的与本机代码通信的方式。
他们有一个名为Platform.jar的第二个库,它打包了一些最常见的本机应用程序接口。
虽然我知道它是什么,但我没有使用过平台,所以我不能指出你在哪里可以找到你正在寻找的东西。但从我在全球JNA的经验来看,这应该会对有很大帮助!
(答案结束)
对于那些想知道它是如何工作的人(在他们的主页上有解释)……好吧,假设他们已经为你处理了本机部分,这样你就可以专注于java端了。主库(jna.jar)为主要的操作系统/体系结构捆绑了许多本地库(.dll、.so、.dylib),Java端则操作它们(这解释了jar的大小:~1Mo)。
当您要使用包含以下内容的多OS库名称"A.dll“、"A.so”或"libA.dylib“时:
int doSomething(char* aString ,byte* aByteArray, long* arraySize)只需编写以下代码,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)
}并使用它:
new LibAWrapper().doSomething("Hello World",....这意味着如果Platform.jar不能满足您的需要,那么您可以很容易地围绕您想要的本地库编写一个包装器
发布于 2010-12-24 21:15:56
您可能会发现SIGAR很有用
发布于 2010-12-24 21:50:10
JNA比JNI更容易使用,而且速度也很慢。我强烈推荐:JNA
https://stackoverflow.com/questions/4525900
复制相似问题