HttpClient NoClassDefFoundError

前端 未结 4 1986
没有蜡笔的小新
没有蜡笔的小新 2020-12-17 16:12

I am trying to run a sample application from HttpClient 4.0.1. It is the file ClientMultiThreadedExecution.java from the examples section. I put in these files in the clas

相关标签:
4条回答
  • 2020-12-17 16:31

    That class is in httpclient-4.0.1.jar (I've just downloaded it to be sure) so I suspect you haven't put it in the classpath properly.

    How are you compiling and running your code?

    0 讨论(0)
  • 2020-12-17 16:35

    This exception tells that the mentioned class is missing in the runtime classpath.

    There are several ways to specify the runtime classpath, depending on how you're executing the program. Since a decent IDE takes this all transparently from your hands, I bet that you're running it in a command prompt.

    If you're running it as a JAR file by java.exe -jar or doubleclicking the file, then you need to specify the classpath in the Class-Path entry of the JAR's MANIFEST.MF file. Note that the %CLASSPATH% environment variable and -cp and -classpath arguments are ignored whenever you execute a JAR.

    If you're running it as a "plain vanilla" Java application by java.exe, then you need to specify it in the -cp or -classpath argument. Note that whenever you use this argument, the %CLASSPATH% environment variable is ignored.

    Either way, the classpath should exist of a (semi)colonseparated string of paths to JAR files (either absolute paths or relative to current working directory). E.g.

    java -cp .;/path/to/file1.jar;/path/to/file2.jar com.example.MyClass

    (if you're on Unix/Linux, use colon instead of semicolon as path separator)

    0 讨论(0)
  • 2020-12-17 16:39

    When I experienced this issue, it turned out that when I added the Fluent API as a Maven dependency, it imported a different version of the HTTPClient API than the one I was already using. Both versions of the API were packaged in the resulting JAR's lib folder. The version conflict is what caused this error.

    Adding entries to your classpath will fix the problem, because you're just manually specifying what version to use. However, to fix the underlying problem, I just needed to delete my target folder before rebuilding (or run maven clean). This removed any "cached" library JARs, and on the next build, only re-downloaded the correct one.

    Hope that helps somebody!

    0 讨论(0)
  • 2020-12-17 16:49

    Running Eclipse Luna 2 (4.4.2) inside cloudera-quickstart-vm-5.8.0 I had to add the following

    • apache-httpcomponents-httpcore.jar
    • httpclient-4.5.3.jar
    • httpclient-cache-4.5.3.jar

    ... and then it worked without errors

    0 讨论(0)
提交回复
热议问题