java错误,eclipse中的jnetpcap库

时间:2014-05-25 18:39:54

标签: java jnetpcap

我尝试编写简单的嗅探器,我想获得设备列表。这是我的功能,但不起作用,我不知道什么是错的,因为我刚刚开始使用这个库。

import java.util.ArrayList;
import java.util.List;
import java.io.*;

import org.jnetpcap.*;

public class sniffer
{
    public static void main(String[] args)
    {
        List<PcapIf> alldevs = new ArrayList<PcapIf>();
        StringBuilder errorbuf = new StringBuilder();

        //pobieranie listy urzadzen

        int r = Pcap.findAllDevs(alldevs, errorbuf);
        if (r == Pcap.NOT_OK || alldevs.isEmpty())
        {
            System.err.println("Can't read list of devices, error is: " +errorbuf.toString());
            return;
        }

    }
}

我不明白这是怎么回事:

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.slytechs.library.NativeLibrary.dlopen(Ljava/lang/String;)J
        at com.slytechs.library.NativeLibrary.dlopen(Native Method)
        at com.slytechs.library.NativeLibrary.<init>(Unknown Source)
        at com.slytechs.library.JNILibrary.<init>(Unknown Source)
        at com.slytechs.library.JNILibrary.loadLibrary(Unknown Source)
        at com.slytechs.library.JNILibrary.register(Unknown Source)
        at com.slytechs.library.JNILibrary.register(Unknown Source)
        at com.slytechs.library.JNILibrary.register(Unknown Source)
        at org.jnetpcap.Pcap.<clinit>(Unknown Source)
        at sniffer.sniffer.main(sniffer.java:18)

2 个答案:

答案 0 :(得分:1)

在Eclipse中,配置调试运行), Arguments 选项卡,在 VM中参数使用以下内容:

-Djava.library.path=<path to jnetpcap.dll or libjnetpcap.so>

答案 1 :(得分:0)

以上例外将是

如果Java虚拟机无法找到声明为native的方法的适当本机语言定义,则抛出该文件。

尝试检查JDK集的路径是否正确指向buildpath中正确的java库。

并确保安装了正确的jdk版本。没有搞乱x86 / x64安装。