带类路径的NoClassDefFoundError

时间:2015-05-01 05:25:41

标签: java noclassdeffounderror jnetpcap

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

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

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

2 个答案:

答案 0 :(得分:2)

-cp就像所有JVM运行选项一样,只有在之前要运行的类的名称时才有效,或-jar选项如果你使用它运行表现出来的主类。 classsname或-jar名称之后的任何标记将作为参数传递给您的程序。一旦你修复了它,你会发现你需要你的类路径包含jnetpcap jar和你的类,所以你需要像

这样的东西
 jar -cp .:path/to/jnetpcap.jar Honey 
 # on Windows use ; instead of :

答案 1 :(得分:1)

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

尝试这样的事情

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

我不知道" Honey"看起来像,所以我使用了这个

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