2012-07-23 131 views
6

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

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

} 

任何帮助不胜感激。

回答

9

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

-Djava.library.path="./lib" 
在运行配置,参数选项卡,在Eclipse VM参数

,而SIGAR斌/ lib下的contnet是lib文件夹。

+0

解决了一个很奇怪和烦人的问题,谢谢! – Hanfeng 2014-04-25 13:30:43

3

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

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

这应该做的伎俩,如果没有,让我知道,我会看看我能做些什么。

+0

我做你说的,但仍然是同样的错误,我想我应该将它们设置为vm参数在eclipse中的运行配置,但我不知道该怎么做。 (我的意思是我应该写的命令)。你能帮忙吗? – Narges 2012-07-24 05:50:02

+1

听起来像你的答案,你最终明白我在说什么。 – 2012-07-24 15:25:24