NoClassDefFoundError с classpath

Я пытаюсь запустить программу с помощью команды:

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 ответа

Решение

Вы должны явно указать JVM, где находится нативная библиотека.

Попробуйте что-то вроде этого

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

Я не знаю, как выглядит "Мед", поэтому я использовал это вместо

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

Для этого конкретного примера, поскольку для него требуются специальные разрешения, я запустил его с помощью sudo.

Для этого примера я скачал отсюда jnetpcap для 64-битной Ubuntu

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

-cp как и все параметры запуска JVM, работают, только если вы поставили его перед именем класса, который вы хотите запустить, или -jar вариант, если вы используете это, чтобы запустить проявленный основной класс. Любые токены после classsname или -jar имя передается в качестве аргументов вашей программе. Как только вы исправите это, вы обнаружите, что ваш classpath должен содержать jar-файл jnetpcap, а также ваши классы, поэтому вам нужно что-то вроде

 jar -cp .:path/to/jnetpcap.jar Honey 
 # on Windows use ; instead of :
Другие вопросы по тегам