2012-07-23 11 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引数を使用する必要があります。sigar-binに/ libにのcontnetはlibフォルダにあるときに、実行構成、引数]タブで日食でVM引数を

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

を。

+0

非常に奇妙で迷惑な問題を解決しました、ありがとう! – Hanfeng

3

シガーはJNIで動作します。そのため、適切な.soまたは.dllファイルは、java.library.pathプロパティで指定されたパスに存在する必要があります。

あなたのsigarディストリビューションを確認してください - zipファイルです。解凍して、 sigar-bin \ libの内容を、パス、PATH、およびLD_LIBRARY_PATH環境変数でアクセス可能な場所にコピーします。通常、プラットフォームごとに1つのファイルしかアクセスできないようにする必要があります。

これはすべきことですが、そうでなければ私に知らせて、私は何ができるかを見ていきます。

+0

私はあなたが言ったことをしますが、それでも同じエラーです。私はeclipseの実行コンフィギュレーションでそれらをvm引数として設定しなければならないと思いますが、それを行う方法はわかりません。 (私が書くべきコマンドを意味する)。あなたは助けてもらえますか? – Narges

+1

あなたの答えのように聞こえると、あなたは結局私が言っていることを理解した。 –

関連する問題