Sigar UnsatisfiedLinkError

Я новичок в сигаре. Я хотел бы запустить простой тест, чтобы узнать, как я могу контролировать свою систему.

добавил 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("---------------------");
    }

}

любая помощь будет оценили.

2 ответов


Я понял проблему!
Я должен использовать следующий аргумент JVM:

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

в конфигурации запуска, вкладке Аргументы, аргументы VM в eclipse, в то время как contnet sigar-bin/lib находится в папке lib.


Sigar работает через JNI. Как таковой, соответствующий .так или иначе .dll-файл должен быть в пути, указанном java.библиотека.свойство path.

Проверьте распределение сигар-zip-файл, я имею в виду. Распакуйте его и скопируйте содержимое sigar-bin\lib в расположение, доступное по переменным среды Path, PATH и LD_LIBRARY_PATH. Как правило, только один файл должен быть доступен для каждой платформы.

Это должно сделать трюк, если это не так, дайте мне знать, и я увижу что я могу сделать.