2009-04-24 37 views
4

我正在寻找一个库或工具包(所以我没有把它写),这将让我做共同的东西就像Linux中的以下内容:你知道任何包装普通Linux操作系统API的JNI包装器工具包或库吗?

  • 获取用户名的UID。
  • 获取用户/组成员信息。
  • 获取有关磁盘驱动器上可用空间的信息。
  • 任何其他可能有用的API调用通常在Java中不可用,因为它们会破坏可移植性。

有没有人有任何想法?

回答

4

POSIX for Java听起来至少是一个很好的起点。请记住,你列出的大部分内容不是“Linux”,它们只是普通的POSIX。

+1

伟大的解决方案,但链接被打破了我。此URL目前可用:http://www.bmsi.com/java/posix/index.html – 2011-05-25 13:41:02

5

不为任何特定库的包装,但JNA (Java Native Access)“提供了Java程序方便地访问本地共享库(在Windows DLL)中不写任何东西,但Java代码”

没有JNI或本地代码是必需的。该功能与Windows的平台/调用和Python的ctypes相当。 Access在运行时是动态的,无需代码生成。

JNA允许您使用自然Java方法调用直接调用本机函数。 Java调用看起来就像在本机代码中一样。大多数呼叫不需要特殊的处理或配置;不需要样板或生成的代码。

JNA库使用一个小的本地库存根来动态地调用本地代码。开发人员使用Java接口来描述目标本地库中的函数和结构。这使得利用本地平台功能非常容易,而不会导致为多个平台配置和构建JNI代码的高额开销。

使用JNA,您应该能够直接调用Linux API(与C中的相同)。