Исключение в потоке "main" java.lang.NoClassDefFoundError:

Я пытаюсь запустить программу Java, и я получаю следующую ошибку во время выполнения. Ошибка показана ниже.

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/params/SyncBasicHttpParams
    at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:157)
    at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:448)
    at org.apache.http.impl.client.AbstractHttpClient.createClientConnectionManager(AbstractHttpClient.java:309)
    at org.apache.http.impl.client.AbstractHttpClient.getConnectionManager(AbstractHttpClient.java:466)
    at org.apache.http.impl.client.AbstractHttpClient.createHttpContext(AbstractHttpClient.java:286)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:851)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
    at net.floodlightcontroller.core.internal.PacketStreamerClient.registerForPackets(PacketStreamerClient.java:90)
    at net.floodlightcontroller.core.internal.PacketStreamerClient.main(PacketStreamerClient.java:51)
Caused by: java.lang.ClassNotFoundException: org.apache.http.params.SyncBasicHttpParams
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 10 more

Ошибка java.lang.NoClassDefFoundError

Теперь Очевидная причина NoClassDefFoundError в том, что определенный класс недоступен в Classpath, поэтому нам нужно добавить его в Classpath, или мы должны проверить, почему он не доступен в Classpath, если мы ожидаем, что он будет.

Теперь файлы, которые я добавил в путь к классам, следующие.

export CLASSPATH=$(JARS=(./lib/*.jar); IFS=:; echo "${JARS[*]}")
export CLASSPATH=$CLASSPATH:~/.m2/repository/org/apache/httpcomponents/httpclient/4.0.1/httpclient-4.0.1.jar
export CLASSPATH=$CLASSPATH:~/.m2/repository/org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
export CLASSPATH=$CLASSPATH:~/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
export CLASSPAHT=$CLASSPATH:~/ms_thesis/ONOS/httpcore-4.1.jar
#export CLASSPATH=$CLASSPATH:~/ms_thesis/ONOS/lib/httpclient-4.2.jar
export CLASSPATH=$CLASSPATH:~/google-gson-2.2.4/gson-2.2.4.jar

Какой JAR-файл я должен добавить, чтобы найти "org/apache/http/params/SyncBasicHttpParams" Я новичок в Java и не знаю, как отладить эту проблему.

4 ответа

Решение

org/apache/http/params/SyncBasicHttpParams класс находится под httpcore-4.1-alpha1.jar, который можно скачать с

http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/httpcomponents/httpcore/4.1-alpha1/httpcore-4.1-alpha1.jar

В будущем, если вам нужно найти банку для класса, вы можете использовать эту ссылку, это обычно полезно:

http://www.findjar.com/

Согласно официальной документации, класс, который вы ищете, находится только в httpcore с 4.1. Вы хотите вытащить новый JAR.

Вот ссылка, чтобы получить файл jar httpcore-4.1

В вашем случае кажется, что вы пропустили некоторые необходимые файлы JAR для включения в ваш проект

в противном случае вы, любой из ваших ссылок, делаете исключение в основном из-за статического вызова метода или инициализации.

Другие вопросы по тегам