Я добавил Apache HttpClient 4.3.5 jar в новую пользовательскую библиотеку в моем проекте, но всякий раз, когда я запускаю свою программу, я получаю ошибку выполнения NoClassDefFound. Я могу сказать, что это вызвано специально классами HttpClient. Я не знаю, как облегчить эту проблему.
NoClassDefFound обычно означает, что вам не нужны необходимые зависимости от класса classpath.
Если вы посмотрите на Maven pom.xml для httpclient, вы увидите, что он имеет некоторые транзитивные зависимости, значения зависят от других артефактов.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
Таким образом, вы можете видеть три артефакта, которые httpclient
зависит от: httpcore
, commons-logging
и commons-codec
.
При этом вы можете пропустить эти зависимости (отсюда NoClassDefFound). Если вы используете Maven, когда вы добавляете httpclient
в качестве зависимости, Maven вытащит эти транзитивные зависимости int для вас.
Однако, похоже, вы не используете Maven. Итак, что вы хотите сделать, это загрузить весь пакет на домашней странице HttpComponents. Если вы возьмете двоичные варианты, например 4.3.5.zip, и распакуйте его, вы увидите все эти банки в каталоге lib
:
commons-codec-1.6
commons-logging-1.1.3
fluent-hc-4.3.5
httpclient-4.3.5
httpclient-cache-4.3.5
httpcore-4.3.2
httpmime-4.3.5
Лучше всего просто добавить все эти банки в одну библиотеку. Затем добавьте всю эту библиотеку в свой проект.
lib
который вы загрузили.
Add external jars
?main()
из Eclipse и выбравRun
? Или в командной строке?