【问题标题】:Sigar UnsatisfiedLinkErrorSigar UnsatisfiedLinkError
【发布时间】:2017-02-21 01:04:30
【问题描述】:

我是 Sigar 的新手。我想运行一个简单的测试来了解如何监控我的系统。

我添加了sigar-1.6.4log4j作为外部库,但是当我去运行它时,我遇到了这个错误:

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("---------------------");
    }

}

任何帮助将不胜感激。

【问题讨论】:

    标签: java debugging sigar


    【解决方案1】:

    我明白了这个问题!
    我必须使用以下 JVM 参数:

    -Djava.library.path="./lib" 
    

    在运行配置,参数选项卡,eclipse中的VM参数,而sigar-bin/lib的contnet在lib文件夹中。

    【讨论】:

    • 解决了一个很奇怪很烦人的问题,谢谢!
    • 我得到同样的错误,但我的问题还没有解决???我的问题是什么,我在 Web 应用程序中使用 sigar 并加载了库。
    【解决方案2】:

    Sigar 通过 JNI 工作。因此,适当的 .so 或 .dll 文件需要位于 java.library.path 属性指定的路径中。

    检查您的 sigar 发行版 - 我的意思是 zip 文件。解压并复制内容 sigar-bin\lib 到您的 Path、PATH 和 LD_LIBRARY_PATH 环境变量可访问的位置。通常,每个平台只需要访问一个文件。

    这应该可以解决问题,如果不行,请告诉我,我会看看我能做些什么。

    【讨论】:

    • 我照你说的做,但还是同样的错误,我想我应该在eclipse的运行配置中将它们设置为vm参数,但我不知道该怎么做。 (我的意思是我应该写的命令)。你能帮忙吗?
    • 从你的回答看来,你终于明白我在说什么了。
    猜你喜欢
    • 2019-08-04
    • 2017-12-02
    • 2014-06-17
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    相关资源
    最近更新 更多