java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

Java

Java Problem Overview


I am getting the error as mentioned below, while running the feed utility. I am trying to load an image "logo.png". The slf4j jar file is also available in the runtime classpath. But still I am getting this error.

Oct 16, 2012 7:34:11 PM com.ibm.commerce.foundation.dataload.FeedRetriever  invokeDataLoad
SEVERE: An error occurred while performing data load.
Throwable occurred: com.ibm.commerce.foundation.dataload.exception.DataLoadException: 
An error occurred while executing the data load. 

java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

	at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:664)
	at com.ibm.commerce.content.commands.DataLoadInvoker.execute(DataLoadInvoker.java:101)
	at com.ibm.commerce.foundation.dataload.FeedRetriever.invokeDataLoad(FeedRetriever.java:244)
	at com.ibm.commerce.foundation.dataload.FeedRetriever.execute(FeedRetriever.java:172)
	at com.ibm.commerce.foundation.dataload.FeedRetriever.main(FeedRetriever.java:321)
Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
	at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:488)
	... 4 more
Caused by: java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
	at org.apache.wink.client.ClientConfig.<clinit>(ClientConfig.java:52)
	at java.lang.J9VMInternals.initializeImpl(Native Method)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:167)
	at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getFeed(AtomReader.java:104)
	at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getEntries(AtomReader.java:147)
	at com.ibm.commerce.foundation.dataload.feedreader.AtomReader.getEntries(AtomReader.java:1)
	at com.ibm.commerce.foundation.dataload.feedreader.BaseFeedReader.init(BaseFeedReader.java:252)
	at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.initializeDataReaders(AbstractBusinessObjectLoader.java:1344)
	at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.init(AbstractBusinessObjectLoader.java:369)
	at com.ibm.commerce.foundation.dataload.BusinessObjectLoader.init(BusinessObjectLoader.java:65)
	at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:431)
	... 4 more
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
	at java.lang.ClassNotFoundException.<init>(ClassNotFoundException.java:76)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:396)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:660)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
	... 16 more
Oct 16, 2012 7:34:11 PM com.ibm.commerce.foundation.dataload.FeedRetriever main
SEVERE: An error occurred while performing data load.
Throwable occurred: com.ibm.commerce.foundation.dataload.exception.DataLoadException: An error has occurred.  If this problem persists, contact product support.
	at com.ibm.commerce.foundation.dataload.FeedRetriever.invokeDataLoad(FeedRetriever.java:247)
	at com.ibm.commerce.foundation.dataload.FeedRetriever.execute(FeedRetriever.java:172)
	at com.ibm.commerce.foundation.dataload.FeedRetriever.main(FeedRetriever.java:321)

Java Solutions


Solution 1 - Java

Add a SLF4J implementation (as you only have its API):

<dependency>
    <groupId>org.slf4j</groupId>
	<artifactId>slf4j-log4j12</artifactId>
    <version>1.7.26</version>
</dependency>

Solution 2 - Java

You have to provide one of the various SLF4J implementation .jar files in the classpath, as well as the interface .jar file. This is documented.

Solution 3 - Java

Download slf4j-1.7.5.zip

It holds different jar files.

Go to -> Integration folder after extracting zip and include following jar files

  1. slf4j-api-2.0.99
  2. slf4j-simple-1.6.99
  3. junit-3.8.1

Solution 4 - Java

Right click on project properties and follow below steps Project Properties" --> "Deployment Assembly", adding "Java Build Path Entries -> Maven Dependencies

Solution 5 - Java

I tried other solutions and the exception didn't go away. So I decompiled the entire jose4j 0.6.5 jar with a Java Decomplier and look at its pom.xml.

I realised it has a specific dependency on slf4j-api, version 1.7.21: enter image description here

So in my project's pom.xml, I added the exact same dependency, updated my Maven project so that it downloads this jar into my repository and the exception was gone.

However it may bring up another error caused by slf4j itself:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

To overcome this issue, I added the following into my project's pom.xml. So altogether you need to add the following to your pom.xml and my jose4j ran without anymore issues:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
</dependency>	

<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.6.4</version>
</dependency>

Remember to update your Maven project after amending your pom.xml.

(Right-click Project folder in Eclipse -> Maven -> Update Project..)

Solution 6 - Java

I also had the similar problem. I had a maven project and was testing rabbitmq. Firstly it showed me the similar error then I added all the SLF4J dependencies in the maven project and then error changed to "Maven SLF4J: Class path contains multiple SLF4J bindings". Here is the complete list of dependencies from pom.xlm

<dependencies>
    <dependency>
  		<groupId>com.rabbitmq</groupId>
  		<artifactId>amqp-client</artifactId>
  		<version>4.0.0</version>
	</dependency>
	<dependency>
  		<groupId>org.apache.commons</groupId>
  		<artifactId>commons-lang3</artifactId>
  		<version>3.0</version>
	</dependency>
    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.7.21</version>
       <scope>compile</scope>
    </dependency>
</dependencies> 

It worked finally.

Solution 7 - Java

I was facing a similar issue and below line fixed the issue for me.

	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
	</dependency>

Edit: I realized that I was using spring boot and the version of the dependency was getting pulled from spring-boot-starter-parent.

Solution 8 - Java

You can use bellow dependency

<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.7</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.7</version>
	</dependency>

Solution 9 - Java

Add the following jars to the class path or lib folder

  1. slf4j-api-1.7.2.jar
  2. slf4j-jdk14-1.7.2.jar

Solution 10 - Java

The perfect solution which works undoubtedly is to just add these packages to your app:
https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.2
http://archive.apache.org/dist/logging/log4j/1.2.16/

after adding so you may encounter following WARNING which you can simply ignore!

SLF4J: No SLF4J providers were found. SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#noProviders for further details.

credits: https://www.javacodegeeks.com/2018/02/fix-exception-thread-main-java-lang-noclassdeffounderror-org-slf4j-loggerfactory-java.html

Solution 11 - Java

This error occurs because of referenced jars are not checked in our project's order and export tab.

Choose Project ->ALT+Enter->Java Build Path ->Order and Export->check necessary jar files into your project.

Finally clean your project and run.It will run successfully.

Solution 12 - Java

When we use the slf4j api jar, we need any of the logger implementations like log4j. On my system, we have the complete set and it works fine.

1. slf4j-api-1.5.6.jar
2. slf4j-log4j12-1.5.6.jar
3. **log4j-1.2.15.jar**

Solution 13 - Java

To be more specific if you are missing the class com.vaadin.external.org.slf4j.LoggerFactory add the below dependency.

<dependency>
    <groupId>com.vaadin.external.slf4j</groupId>
    <artifactId>vaadin-slf4j-jdk14</artifactId>
    <version>1.6.1</version>
</dependency>

If you are missing any other org.slf4j.LoggerFactory, just go to Maven central class name search and search for the exact class name to determine what exact dependency you are missing.

Solution 14 - Java

I believe the answer is outlined on the slf4j web-site (Failed to load class org.slf4j.impl.StaticLoggerBinder)

For a very quick solution I suggest adding no-operation (NOP) logger implementation (slf4j-nop.jar)

For example, if using maven:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>${slf4j-nop-version}</version>
</dependency>

Solution 15 - Java

use maven it will download all the required jar files for you.

in this case you need the below jar files:

slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar

These jars will also depend on the cassandra version which you are running. There are dependencies with cassandra version , jar version and jdk version you use.

You can use : jdk1.6 with : cassandra 1.1.12 and the above jars.

Solution 16 - Java

make sure your MANIFEST.MF contains the name of the referenced jar in my application was slf4j-api-*. jar.

Solution 17 - Java

You need slf4j-api library. For most cases only slf4j-api and slf4j-jkd14 are only required:

Here you can download the version 1.7.2:

slf4j-api-1.7.2.jar
slf4j-jkd14-1.7.2jar

If you need an example to see how these are used, refers to this tutorial: http://www.ibm.com/developerworks/java/library/j-hangman-app/index.html

All the code for the tutorial is available

Solution 18 - Java

get the compatible version of this jar slf4j-jdk14 and add it as a dependency. this solved the problem for me.

Solution 19 - Java

You need slf4j-api library and slf4j-log4j12-1.7.25 jar. Copy this jars in your project-> WEBINF-> lib folder and in tomcat server lib folder to execute successfully.

Solution 20 - Java

When you copy dependency from maven repository there is:

<scope>test</scope>

Try to remove it from dependencies in pom.xml like this.

<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>

This works for me. I hope it would be helpful for someone else.

Solution 21 - Java

this worked for me /properties/maven uncheck resolve dependencies from Workspace projects.

Solution 22 - Java

First, check the dependency hierarchy than to exclude all slf4j jars from other dependencies and add separate slf4j as dependencies.

Solution 23 - Java

If you are facing java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

Add slf4j-log4j12 jar in the library folder of the project

Solution 24 - Java

The LoggerFactory class is msising according to the error message:

> java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory

Apparently, the slf4j.jar file is not getting loaded for some reason.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBala RamachandranView Question on Stackoverflow
Solution 1 - JavaLuís SoaresView Answer on Stackoverflow
Solution 2 - Javauser207421View Answer on Stackoverflow
Solution 3 - JavaYuvraj KakkarView Answer on Stackoverflow
Solution 4 - JavaRashad SaifView Answer on Stackoverflow
Solution 5 - Javauser3437460View Answer on Stackoverflow
Solution 6 - JavaAnuj PandeyView Answer on Stackoverflow
Solution 7 - JavaMir Kazim Ali TabrezView Answer on Stackoverflow
Solution 8 - JavaEnamul HaqueView Answer on Stackoverflow
Solution 9 - JavaShanu ShineView Answer on Stackoverflow
Solution 10 - JavaMohammad Amin RezaeizadehView Answer on Stackoverflow
Solution 11 - JavaBABU KView Answer on Stackoverflow
Solution 12 - JavaNagappanView Answer on Stackoverflow
Solution 13 - Javaisuru chathurangaView Answer on Stackoverflow
Solution 14 - JavaMarkAddisonView Answer on Stackoverflow
Solution 15 - JavaJagjyotView Answer on Stackoverflow
Solution 16 - JavaRamiro PedrozoView Answer on Stackoverflow
Solution 17 - Javali_developerView Answer on Stackoverflow
Solution 18 - JavahashguardView Answer on Stackoverflow
Solution 19 - JavaPANKAJ MALIView Answer on Stackoverflow
Solution 20 - JavaZarko EeternalView Answer on Stackoverflow
Solution 21 - JavaMikeView Answer on Stackoverflow
Solution 22 - JavaSHIVAView Answer on Stackoverflow
Solution 23 - JavaYoshita MahajanView Answer on Stackoverflow
Solution 24 - JavaCloudyMarbleView Answer on Stackoverflow