Sigar UnsatisfiedLinkError

7
我是Sigar的新手。我想运行一个简单的测试来了解如何监控我的系统。
我添加了 `sigar-1.6.4` 和 `log4j` 作为外部库,但是当我要运行它时,我遇到了以下错误:
``` Exception in thread "main" java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/CpuInfo; at org.hyperic.sigar.Sigar.getCpuInfoList(Native Method) ```
以下是我的代码:
import java.util.Map;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.FileSystem;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Sigar sigar = new Sigar();
        CpuInfo[] cpuinfo = null;
        try {
        cpuinfo = sigar.getCpuInfoList();
        } catch (SigarException se) {
        se.printStackTrace();
        }

        System.out.println("---------------------");
        System.out.println("Sigar found " + cpuinfo.length + " CPU(s)!");
        System.out.println("---------------------");
    }

}

任何帮助都将不胜感激。
2个回答

9
我理解了这个问题!
我需要使用以下JVM参数:
-Djava.library.path="./lib" 

在Eclipse的运行配置中,Arguments选项卡中的VM arguments中,sigar-bin/lib的内容应该在lib文件夹中。

解决了一个非常奇怪和烦人的问题,谢谢! - Hanfeng
我遇到了相同的错误,但我的问题还没有解决???我的问题是什么,我在Web应用程序中使用sigar和库已经被加载。 - M2E67

5
Sigar 是通过 JNI 运行的,因此需要将相应的 .so 或 .dll 文件放置在 java.library.path 属性所指定的路径中。
请检查您的 Sigar 发行版 - 我指的是 zip 文件。将其解压并将 sigar-bin\lib 的内容复制到 Path、PATH 和 LD_LIBRARY_PATH 环境变量可以访问的位置。通常,每个平台只需要访问一个文件即可。
如果这样做还不行,请告诉我,我会尽力提供帮助。

我按照你说的做了,但还是出现同样的错误,我想我应该在Eclipse的运行配置中将它们设置为VM参数,但我不知道该如何操作(我的意思是我应该写什么命令)。请问您能帮忙吗? - Narges
1
从你的回答听起来,你最终理解了我在说什么。 - Vishal Rao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接