7

シガー初心者です。システムを監視する方法を知るために簡単なテストを実行したいと思います。

を外部ライブラリとして追加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("---------------------");
    }

}

どんな助けでも大歓迎です。

4

2 に答える 2

9

問題がわかりました!
次の JVM 引数を使用する必要があります。

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

実行構成、引数タブ、Eclipse の VM 引数で、sigar-bin/lib の内容は lib フォルダーにあります。

于 2012-07-24T06:20:36.430 に答える
5

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

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

それでうまくいかない場合は、私に知らせてください。何がで​​きるか見てみましょう。

于 2012-07-23T23:09:11.860 に答える