2016-04-20 7 views
2

Ich versuche, als Java-Anwendung in einem Maven-Projekt mit Eclipse zu laufen, und ich bekomme den folgenden Laufzeitfehler. Der Fehler ist unten gezeigt.Ausnahme im Thread "Haupt" 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)

und mein Code unter

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

    } 
} 

Mein pom.xml ist unter

<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> 

irgendwelche idea..thanks

+0

versuchen, das Projekt zu reinigen und neu zu erstellen – Abdelhak

+0

@Abdelhak ja, ich habe es schon oft versucht, aber es ist ohne Wirkung! –

+0

Da Sie auf Eclipse ausgeführt werden, sollten Sie prüfen, ob httpcore in Eclipse-Projekt Classpath ist? Ein weiterer Punkt ist zu überprüfen, ob der httpcore-4.1alpha1 Klasse hat: ConnectionReuseStrategy – NangSaigon

Antwort

1

Ich erkannte, gezeigt, dass es einige Abhängigkeiten mit der gleichen groupId und artifactId.

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

Und

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

Eigentlich sollten Sie nur eine Abhängigkeit mit dem gleichen groupId und artifactId haben.

Also zuerst habe ich httpcore: 4.1-Alpha1 Abhängigkeit entfernt und die Testklasse ausgeführt. Ich habe die Ausnahme als

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

Dann habe ich httpcore: 4,1-alpha1 statt httpcore-4.1, bekam ich die gleiche Ausnahme.

Und so, wenn ich die httpcore Version 4.3.3 aktualisiert, basierend auf SO link, bekam ich die Ausnahme als -

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) 

schließlich die httpcore Version 4.4 zu aktualisieren, es funktionierte völlig in Ordnung. Es sollte also für alle httpcore Version-Jars über 4.4 funktionieren. (Ich habe für 4.4.4 getestet und es hat auch gut funktioniert.). Verfügbare Versionen sind here. Den Arbeitscode finden Sie unter here.

+0

@asgDanke für Ihre Antwort! Aber es funktioniert nicht Wenn ich deinen Arbeitscode benutze. Vielleicht denke ich, dass es der Grund meiner Eclipse ist. –

+0

Ich benutze STS 3.7.0.20 und es funktioniert gut mit STS. – asg

+0

@asgIch kenne den Grund.Ich hatte .jar-Dateien in meine JDK-Ordner kopiert! Nachdem ich sie gelöscht habe, funktioniert es.! –

Verwandte Themen