我是 sigar 和 java 中的本机库编程的新手,所以也许这只是一个简单的问题,但我自己找不到结果。我在 win 7(64 位)操作系统上使用 eclipse indigo。我已采取以下步骤:
将 sigar.jar 和 log4l.jar 添加到 jre6/lib,将 sigar-amd64-winnt.dll(也是 x86 的文件)文件添加到 ./Program Files/Java/jre6/lib。然后我只想创建一个新的 sigar() 但得到以下异常:
Failed to load sigar-amd64-winnt: java.lang.NullPointerException
org.hyperic.sigar.SigarException: Failed to load sigar-amd64-winnt: java.lang.NullPointerException
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:170)
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:100)
at MemExample.<clinit>(MemExample.java:8)
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Mem.gather(Lorg/hyperic/sigar/Sigar;)V
at org.hyperic.sigar.Mem.gather(Native Method)
at org.hyperic.sigar.Mem.fetch(Mem.java:30)
at org.hyperic.sigar.Sigar.getMem(Sigar.java:304)
at MemExample.getInformationsAboutMemor
我已经尝试操作 VM-Arguments(在 中Run Config -DJava.library.path="path/of/lib"
),将 java 构建路径中的本机库设置为 sigar/lib 的路径,并在我自己的程序中使用System.setProperty("path", "-")
. 直到现在,所有这些都是不成功的。我一步一步地屈服于绝望。
**编辑:** sigar 是否可能仅适用于 AMD?一些朋友在 AMD 处理器上尝试了相同的代码并获得了 win 7 (32b) 并且它可以工作。我已经在 hyperic sigar 开发者论坛中寻找答案,但我找不到任何有用的提示或答案。