2012-07-23 9 views
6

Soy nuevo en Sigar. Me gustaría ejecutar una prueba simple para saber cómo puedo controlar mi sistema.Sigar UnsatisfiedLinkError

que añade sigar-1.6.4 y log4j como bibliotecas externas, pero cuando voy a ejecutarlo, me enfrento a este error:

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

Aquí está mi código:

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

} 

cualquier ayuda ser apreciado.

Respuesta

9

¡Entendí el problema!
Tengo que usar el siguiente argumento JVM:

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

en ejecutar la configuración, pestaña Argumentos, los argumentos de VM en eclipse, mientras que el CONTNET de sigar-bin/lib está en la carpeta lib.

+0

resolvió un problema muy extraño y molesto, ¡gracias! – Hanfeng

3

Sigar funciona a través de JNI. Como tal, el archivo .so o .dll apropiado debe estar en la ruta especificada por la propiedad java.library.path.

Revise su distribución sigar - el archivo zip, quiero decir. Descomprímalo y copie los contenidos de sigar-bin \ lib a una ubicación accesible mediante las variables de entorno Path, PATH, y LD_LIBRARY_PATH. Por lo general, solo se debe tener acceso a un archivo por plataforma.

Eso debería ser el truco, si no es así, házmelo saber y veré lo que puedo hacer.

+0

Hago lo que usted dice, pero sigue el mismo error, supongo que debo establecerlos como argumento vm en la configuración de ejecución en eclipse, pero no sé cómo hacerlo. (Me refiero al comando que debería escribir). ¿Me puede ayudar por favor? – Narges

+1

Parece que a partir de su respuesta, finalmente entendió lo que estaba diciendo. –

Cuestiones relacionadas