2012-07-23 7 views
6

Ich bin neu in Sigar. Ich möchte einen einfachen Test durchführen, um zu wissen, wie ich mein System überwachen kann.Sigar UnbefriedigterLinkError

fügte ich sigar-1.6.4 und log4j als externe Bibliotheken, aber wenn ich es laufen zu gehen, begegne ich diesen Fehler:

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getCpuInfoList()[Lorg/hyperic/sigar/CpuInfo; at org.hyperic.sigar.Sigar.getCpuInfoList(Native Method)

Hier ist mein Code:

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

} 

Jede mögliche Hilfe geschätzt werden.

Antwort

9

Ich habe das Problem verstanden!
Ich habe folgendes JVM-Argument verwenden:

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

in Run-Konfiguration, Argumente Registerkarte VM Argumente in Eclipse, während die Contnet von sigar-ist/lib in lib-Ordner ist.

+0

löste ein sehr seltsames und nerviges Problem, danke! – Hanfeng

3

Sigar arbeitet über JNI. Daher muss sich die entsprechende .so- oder .dll-Datei in dem von der Eigenschaft java.library.path angegebenen Pfad befinden.

Überprüfen Sie Ihre Sigar-Verteilung - die Zip-Datei, meine ich. Entpacken Sie es und kopieren Sie den Inhalt von sigar-bin \ lib an eine Stelle, auf die Sie mit den Umgebungsvariablen Path, PATH und LD_LIBRARY_PATH zugreifen können. Normalerweise muss nur eine Datei pro Plattform verfügbar sein.

Das sollte den Trick tun, wenn nicht, lass es mich wissen und ich werde sehen, was ich tun kann.

+0

Ich tue, was Sie sagten, aber immer noch den gleichen Fehler, ich denke, ich sollte sie als vm Argument in Run-Konfiguration in Eclipse setzen, aber ich weiß nicht, wie es geht. (Ich meine den Befehl, den ich schreiben sollte). Kannst du mir bitte helfen? – Narges

+1

Hört sich nach deiner Antwort an, du hast schließlich verstanden, was ich gesagt habe. –

Verwandte Themen