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

나는이 문제를 이해했다! SIGAR - 빈/lib 디렉토리의 contnet은 lib 폴더에

실행 구성, 인수 탭, 일식에서 VM 인수에
-Djava.library.path="./lib" 

, 반면 :
나는 다음과 같은 JVM 인수를 사용해야합니다.

+0

매우 이상하고 성가신 문제가 해결되었습니다, 감사합니다! – Hanfeng

3

시가는 JNI를 통해 작동합니다. 이와 같이 적절한 .so 또는 .dll 파일은 java.library.path 등록 정보로 지정된 경로에 있어야합니다.

귀하의 sigar 배포판을 확인하십시오 - zip 파일을 의미합니다. 압축을 풀고 sigar-bin \ lib의 내용을 Path, PATH 및 LD_LIBRARY_PATH 환경 변수가 액세스 할 수있는 위치에 복사하십시오. 일반적으로 플랫폼 당 하나의 파일 만 액세스 할 수 있어야합니다.

트릭을해야합니다. 그렇지 않으면 알려 주시면 내가 할 수있는 것을 보여 드리겠습니다.

+0

나는 당신이 말한대로하지만, 여전히 같은 오류, 나는 당신이 일식에서 실행 구성에 VM을 인수로 그들을 설정해야 할 것 같아요,하지만 어떻게 해야할지 모르겠다. (나는 명령을 써야한다). 제발 도와 줄 수있어? – Narges

+1

당신의 대답처럼 들리는데, 결국 내가 한 말을 이해하게되었습니다. –

관련 문제