2012-07-23 136 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