我尝试编写简单的嗅探器,我想获得设备列表。这是我的功能,但不起作用,我不知道什么是错的,因为我刚刚开始使用这个库。
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)
答案 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安装。