2012-07-23 26 views
6

Tôi mới đến Sigar. Tôi muốn chạy một bài kiểm tra đơn giản để biết cách tôi có thể theo dõi hệ thống của mình.Sigar UnsatisfiedLinkError

tôi thêm sigar-1.6.4log4j như thư viện bên ngoài, nhưng khi tôi đi để chạy nó, tôi phải đối mặt với lỗi này:

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

Đây là mã của tôi:

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

} 

Bất kỳ trợ giúp sẽ được đánh giá cao.

Trả lời

9

Tôi đã hiểu được sự cố!
tôi phải sử dụng Đối số JVM sau:

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

trong Run Configuration, tab Arguments, đối số VM trong nhật thực, trong khi contnet của SIGAR-bin/lib nằm trong thư mục lib.

+0

giải quyết được một vấn đề rất lạ và khó chịu, cảm ơn bạn! – Hanfeng

3

Sigar hoạt động qua JNI. Như vậy, tệp .so hoặc .dll thích hợp cần phải nằm trong đường dẫn được chỉ định bởi thuộc tính java.library.path.

Kiểm tra phân phối sigar của bạn - tệp zip, ý tôi là. Giải nén và sao chép nội dung của sigar-bin \ lib vào một vị trí có thể truy cập bằng biến môi trường Đường dẫn, PATH và LD_LIBRARY_PATH của bạn. Thông thường, chỉ có một tệp cần được truy cập trên mỗi nền tảng.

Điều đó nên thực hiện thủ thuật, nếu không, hãy cho tôi biết và tôi sẽ xem những gì tôi có thể làm.

+0

Tôi làm những gì bạn nói, nhưng vẫn cùng một lỗi, tôi đoán tôi nên đặt chúng làm đối số vm trong cấu hình chạy trong nhật thực, nhưng tôi không biết cách thực hiện. (Tôi có nghĩa là lệnh tôi nên viết). Bạn có thể giúp đỡ không? – Narges

+1

Nghe như câu trả lời của bạn, cuối cùng bạn đã hiểu những gì tôi đang nói. –

Các vấn đề liên quan