0

我正在尝试使用以下命令运行程序:

java Honey -cp ../../jnetpcap-1.3.0/jnetpcap.jar

并收到标题错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jnetpcap/Pcap
        at Honey.main(Honey.java:18)
Caused by: java.lang.ClassNotFoundException: org.jnetpcap.Pcap
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

如果有人能指出我可能做错了什么,我将不胜感激。

4

2 回答 2

2

-cp像所有 JVM 运行选项一样,仅当您将其放在要运行的类的名称之前-jar,或者如果您使用该选项来运行清单的主类时,该选项才有效。类名或类名之后的任何标记-jar都作为参数传递给您的程序。一旦你修复它,你会发现你需要你的类路径来包含 jnetpcap jar 和你的类,所以你需要类似的东西

 jar -cp .:path/to/jnetpcap.jar Honey 
 # on Windows use ; instead of :
于 2015-05-01T06:31:13.197 回答
1

您必须明确告诉 JVM 本地库在哪里。

尝试这样的事情

sudo ../jdk1.8.0_45/bin/java -Djava.library.path=/home/leoks/Downloads/jnetpcap-1.3.0 -cp .:jnetpcap.jar 亲爱的

我不知道“亲爱的”长什么样子,所以我改用了这个

http://jnetpcap.com/?q=examples/classic

对于这个特定的示例,由于它需要一些特殊权限,因此我使用 sudo 运行它。

对于这个例子,我从这里下载了 ubuntu 64 位的 jnetpcap

http://sourceforge.net/projects/jnetpcap/files/jnetpcap/1.3/jnetpcap-1.3.0-1.ubuntu.x86_64.tgz/download

我使用过 Oracle JDK 1.8.0_45 和 Ubuntu 14.04.2 LTS

于 2015-05-01T06:34:37.990 回答