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
Я использовал 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 :