"main" java.lang.NoClassDefFoundError: org/apache/http/HttpEntity - java

I'm trying to use the apache http library in my project. I imported the libreries in my project http://imgur.com/WvwqcDS
When I run my program, I get this error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpEntity
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpEntity
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more

The ClassLoader can't find org.apache.http.HttpEntity, which should be inside "httpcore-4.3.jar". Open the jar as an archive and verify that it contains org/apache/http/HttpEntity.class. If it does, the issue is in your launch configuration. In Eclipse, go to Run > Run Configurations... and find the Java Application profile for your main class (which should be the class containing the main method in "Launcher" project, based on the screenshot). Under the Classpath tab, you should see your library jars listed.
If not, go back to your "Launcher" project in the Navigation pane, right-click and select Properties, go to "Build Path", remove your jars, press OK, then go back in and add them again (to guarantee the eclipse meta-data is fresh). Also, under the "Order and Export" tab, it's a good idea to check off all jars so that if you include Launcher as a dependency for another project, the jars are transitively included.

your Eclipse is having trouble locating the external jars, try importing them into your workspace or referencing them outside by using "add external jar's"

In my case Maven was not updating dependencies properly. I use mvn clean and then re-updated dependencies then it got fixed.

Related

Java Class Not Found While Debugging and Running JavaFx Eclipse Project

I have been reading through SO and several pages of google links, tried all of the approaches there but I cannot get my project running any more.
I am developing a small app and i decided to persist some data in JSON. I downloaded javax.json-api-1.1.jar and javax.json-api-1.1-sources.jar. Eclipse finds the jar file, I can import it, intellisense works, etc. Sadly, when running or debugging I get the following error as soon as the first JSON related line is executed:
Caused by: javax.json.JsonException: Provider org.glassfish.json.JsonProviderImpl not found
at javax.json.spi.JsonProvider.provider(JsonProvider.java:99)
at javax.json.Json.createObjectBuilder(Json.java:299)
at tabumaker.view.ChordManagementViewController.handleAddChordSaveBtnOnAction(ChordManagementViewController.java:214)
... 62 more
Caused by: java.lang.ClassNotFoundException: org.glassfish.json.JsonProviderImpl
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at javax.json.spi.JsonProvider.provider(JsonProvider.java:96)
... 64 more
I put both jar files within my workspace and linked them in my eclipse project the following way:
Source attached to jar file:
Source-Lookup-Path set in project:
Source-Lookup-Path:
I really have no idea why it doesn't work. Eclipse has all information to find the API and the corresponding sources within those two jar files.

Maven Project can't import log4j2 classes

I created maven project, I addded log4j2 dependencies to POM, and my project obviously can't import LogManager class. Why? That's output from maven console.
c:\Users\Dawid\Desktop\Pracbaza\my-project>java -cp target\my-project-1.0-SNAPSHOT.jar com.spica.project.App
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/LogManager
at com.spica.project.App.<clinit>(App.java:7)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more
you've added those dependencies to the pom, so maven knows that your project depends on log4j, but you're not executing maven right now. you're using the java executable to run your compiled code. java has no idea what a pom.xml is (since maven is an external tool).
you have several options:
list all of your dependencies in the cp argument, not just your jar. so java -cp target\your.jar;path\to\log4j2.jar;anything;else
list your dependencies in your jar file's MANIFEST.MF file. you can either list absolute paths (BAD IDEA) or file names and place your libs alongside your jar
package your jar as either jar-with-dependencies or onejar. that way it'll pack all the libs alongside your own code and will be able to find them. there is a difference between these 2 options that you better understand before you pick one.
This is because your log4j jar is not there in the classpath while running your code. Try adding the log4j jar in your classpath (in -cp switch).

Java: java.lang.NoClassDefFoundError: org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager

I created a webservice using servlet and Tomcat 6.0.
I created a java project in eclipse to call that webservice using HTTP.
I added the following jar files
1. httpcore-4.0
2. httpclient-4.0
but while running the project im getting the following error.
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>(ThreadSafeClientConnManager.java:75)
at WSCall.HttpUtilities.GetServerResponse(HttpUtilities.java:52)
at WSCall.ServiceCall.main(ServiceCall.java:16)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 3 more
Please help me to find the solution.
You still have to add common-logging dependency under your classpath. However, you may continue encounter other simaliar Exceptions due to lack other dependency. I suggest you use maven to manage the dependency so that you don't have to mannualy add dependencies to your classpath.
It seems your project doesn't contain the Apache Commons Logging library. Adding it to your classpath should do the trick.
This is caused by the missing of commons-logging.jar.To fix it, download the commons logging library and add it to your project.

JUnit RemoteTestRunner NoClassDefFoundError Junit4 Eclipse 3.7.2

I am attemping to add JUnit tests to my existing Eclipse 3.7.2 project and it seems like JUnit is not properly added to the project. I have attempting adding the JUnit jar manually. I have tried several other run configuration modifications that all result in the same error. New projects that I create also exhibit this error when I add a JUnit test.
java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/junit/runner/RemoteTestRunner
Caused by: java.lang.ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main"
Are you installing Eclipse to a directory to which you can't write? Windows 7 UAC can prevent certain files from being written, especially in C:\Program Files.... It's better to install Eclipse in a directory that you can write.
This could be caused by a classpath issue. First ensure that you definitely have the junit.jar in your build path.
In Eclipse Indigo: Go to “Package Explorer” right-hand click > ‘Build Path’ > ‘Configure Build Path’ > in the Libraries tab. There you should the junit.jar.
Generally creating the test case within Eclipse adds this jar to the build path.
The same exception could also occur if you have a build path conflict. Going to Window > Show View > 'Markers' shows you the problems with the project. (In my case there was a circular reference)

Java: NoClassDefFoundError using Apache Commons CLI 1.2

I am using the Apache Commons CLI 1.2 to parse command line arguments in Java. I had run into the NoClassDefFoundError when trying to run my java class but solved it by fixing the class-paths.
Now I have the same exception but in regards to the actual commons-cli classes as is shown below:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cl i/CommandLineParser Caused by:
java.lang.ClassNotFoundException: org.apache.commons.cli.CommandLineP arser
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: com.amirsys.score.api.script.CMDContentPusher.
The only thing I could think of is to set the class path to the commons-cli jar but that did not work. I haven't been able to find a solution to fixing the NoClassDefFoundError for imported classes. I thought these were compiled into the .class files?
Commons CLI is not in the classpath at runtime. If you struggle to get the classpath right you can try to package your application as a single big jar file containing all its dependencies, including Commons CLI. There are many tools to achieve that (jarjar, onejar, Maven shade plugin...)

Categories

Resources