2

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

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)
4

2 回答 2

1

在 Eclipse 中,在Configurations ( DebugRun ) 的Arguments选项卡下,在VM Arguments中使用以下内容:

-Djava.library.path=<path to jnetpcap.dll or libjnetpcap.so>
于 2014-07-10T14:03:29.023 回答
0

上述异常将是

如果 Java 虚拟机找不到声明为本地的方法的适当本地语言定义,则抛出此异常。

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

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

于 2014-05-25T19:24:26.770 回答