【发布时间】:2021-01-09 10:06:54
【问题描述】:
我是 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 的路径,并自行在程序中设置 Systempath System.setProperty("path", "-")。直到现在,所有这些都是不成功的。
一步一步让我绝望。
**编辑:** sigar 是否可能仅适用于 AMD? 一些朋友在 AMD 处理器上尝试了相同的代码并获得了 win 7 (32b) 并且它可以工作。 我已经在 hyperic sigar 开发者论坛中寻找答案,但找不到任何有用的提示或答案。
【问题讨论】:
-
不要将 Jars 或 native 放入任何 JRE。将它们添加到运行时类路径或库路径。
-
你把dll放在哪里了?因为很有可能 dll 不在正确的路径中。
-
问题是,我怎样才能让程序工作。 Java/jre6/lib 容器中的 .dll 文件。
-
有谁知道amd处理器有没有依赖?因为我使用的是英特尔。
标签: java nullpointerexception sigar