2016-04-20 6 views
2

Я пытаюсь запустить как приложение Java в проекте maven с Eclipse, и я получаю следующую ошибку времени выполнения. показано ниже.Исключение из потока «main» java.lang.NoClassDefFoundError: org/apache/http/ConnectionReuseStrategy:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ConnectionReuseStrategy at com.wang.testMaven.App.main(App.java:16) Caused by: java.lang.ClassNotFoundException: org.apache.http.ConnectionReuseStrategy at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

и мой код показан ниже

public class App 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Hello World!"); 
     HttpClient httpClient = HttpClientBuilder.create().build(); 
     System.out.println("Hello World!"); 

    } 
} 

Мой pom.xml показан ниже

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.wang</groupId> 
    <artifactId>testMaven</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>testMaven</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpcore</artifactId> 
    <version>4.1-alpha1</version> 
</dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
      <version>4.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpmime</artifactId> 
      <version>4.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpcore</artifactId> 
      <version>4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient-cache</artifactId> 
      <version>4.5.2</version> 
     </dependency> 
    </dependencies> 
</project> 

любые idea..thanks

+0

попытаться очистить и перестроить проект – Abdelhak

+0

@Abdelhak Да, я пробовал много раз, но это не имеет никакого эффекта! –

+0

Поскольку вы запускаете Eclipse, вы должны проверить, что httpcore находится в пути к классу проекта eclipse? Еще один момент - проверить, есть ли у класса httpcore-4.1alpha1 класс: ConnectionReuseStrategy – NangSaigon

ответ

1

Я понял, что есть пара зависимостей с одинаковыми идентификаторами groupId и artifactId.

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpcore</artifactId> 
    <version>4.1-alpha1</version> 
</dependency> 

И

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpcore</artifactId> 
    <version>4.1</version> 
</dependency> 

На самом деле вы должны иметь только один зависимость с тем же GroupID и артефакта.

Итак, сначала я удалил httpcore: 4.1-alpha1 и выполнил тестовый класс. Я получил исключение, как

java.lang.NoClassDefFoundError: org/apache/http/config/Lookup 
    at com.test.so.Test1.test(Test1.java:12) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

Тогда я использовал httpcore: 4.1-alpha1 вместо httpcore-4.1, я получил такое же исключение.

И поэтому, когда я обновил версию httpcore 4.3.3 на основе SO link, я получил исключение как -

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ssl/SSLContexts 
    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966) 
    at com.amitg.so.App.main(App.java:11) 

Наконец обновление версии httpcore до 4.4, это работало прекрасно. Таким образом, он должен работать на всех версиях версии httpcore версии 4.4. (Я тестировал 4,4,4, и он также отлично работал.). Имеются версии here. Пожалуйста, найдите рабочий код свыше here.

+0

@asgВы получите ответ! Но это не работает. Когда я использую ваш рабочий код. Возможно, я думаю, что это причина моего Eclipse. –

+0

Я использую STS 3.7.0.20, и он отлично работает с STS. – asg

+0

@asg Я знаю причину. Я скопировал файлы .jar в свои папки JDK! После того, как я их удалю, он работает.! –

 Смежные вопросы

  • Нет связанных вопросов^_^