首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java库/ win32

问Java库/ win32
EN

Stack Overflow用户
提问于 2010-12-24 18:55:34
回答 5查看 1.6K关注 0票数 3

是否有合适的Java win32库,例如,显示当前进程,查找进程已采用的端口号等?(或者像WMI库这样的东西?)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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“时:

代码语言:javascript
复制
int doSomething(char* aString ,byte* aByteArray, long* arraySize)

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

代码语言:javascript
复制
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)
}

并使用它:

代码语言:javascript
复制
new LibAWrapper().doSomething("Hello World",....

这意味着如果Platform.jar不能满足您的需要,那么您可以很容易地围绕您想要的本地库编写一个包装器

票数 6
EN

Stack Overflow用户

发布于 2010-12-24 21:15:56

您可能会发现SIGAR很有用

票数 2
EN

Stack Overflow用户

发布于 2010-12-24 21:50:10

JNA比JNI更容易使用,而且速度也很慢。我强烈推荐:JNA

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4525900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档