4

I am trying to run as Java Application in a maven project with Eclipse and I am getting the following run time error.The error is shown below.

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)

and my code is shown below

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

    }
}

My pom.xml is shown below

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

any idea..thanks

3
  • try to clean and rebuild the project Commented Apr 20, 2016 at 13:55
  • @Abdelhak yes,I have tried it many times but it‘s without any effect! Commented Apr 20, 2016 at 14:18
  • Because you run on Eclipse, you should check the httpcore is in eclipse project classpath? One more point is to check if the httpcore-4.1alpha1 has class:ConnectionReuseStrategy Commented Apr 20, 2016 at 14:38

1 Answer 1

7

I realised that there are couple of dependencies with the same groupId and artifactId.

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

And

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

Actually you should have only one dependency with the same groupId and artifactId.

So firstly I removed httpcore:4.1-alpha1 dependency and executed the test class. I got the exception as

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

Then I used httpcore:4.1-alpha1 instead of httpcore-4.1, I got the same exception.

And hence when I updated the httpcore version to 4.3.3 based on SO link, I got the exception as -

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)

Finally updating the httpcore version to 4.4, it worked perfectly fine. So it should work for all httpcore version jars above 4.4. (I tested for 4.4.4 and it also worked fine.). Version available are mentioned here. Please find the working code over here.

Sign up to request clarification or add additional context in comments.

5 Comments

@asgThank you for your answer! But it doesn't work When I use your working code.Maybe I think it's the reason of my Eclipse.
I am using STS 3.7.0.20 and it's working fine with STS.
@asgI know the reason.I had copied .jar files into my JDK folders! After I delete them it works.!
Good to know. Thanks!
Thanks @asg for your answer! I changed(upgraded) my org.apache.httpcomponents httpcore version to 4.4.13 based on the Spring dependency doc and it worked for me. Reference here: docs.spring.io/spring-boot/docs/current/reference/html/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.