NoClassDefFoundError: org/slf4j/Logger
Solution 1
The answer is hidden in the manual page:
Use of the Log4j 2 SLF4J Binding (log4j-slf4j-impl-2.0.jar) together with the SLF4J adapter (log4j-to-slf4j-2.0.jar) should never be attempted, as it will cause events to endlessly be routed between SLF4J and Log4j 2.
You want to keep the log4j-slf4j-impl-2.xx.jar and remove the log4j-to-slf4j-2.xx.jar.
Solution 2
Yes. you need the SLF4J jar file. You can download it at: http://www.slf4j.org/download.html
Solution 3
A NoClassDefFoundError
with ClassNotFoundException
specifies that the particular class is missing during runtime.
You have to provide one of the various SLF4J
implementation .jar files in the classpath
Stephen McKain
Updated on July 05, 2022Comments
-
Stephen McKain almost 2 years
I added Log4J2 to my application. I copied all the Log4J2 .jar files to by LIB directory and created the Log4J2.xml file to support it. My code was updated to import the necessary Log Manager and Logger APIs. I then added the static final logger method and called the logger apis in my code. Everything compiled file in Eclipse. I proceed to start my server on my DEV machine to validate it. Upon starting my server I received the following error:`
2014-10-19 21:39:31.753:INFO:oejs.Server:jetty-8.1.14.v20131031 2014-10-19 21:39:32.680:WARN:oejuc.AbstractLifeCycle:FAILED FoundationStartup: java.lang.NoClassDefFoundError: org/slf4j/Logger java.lang.NoClassDefFoundError: org/slf4j/Logger at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:474) at com.global.service.FoundationStartup.<clinit>(FoundationStartup.java:19) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger 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) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:474) at com.global.service.FoundationStartup.<clinit>(FoundationStartup.java:19) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) at org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29)`
What is wrong with my configuration? Do I need to download another .JAR or is this a configuration problem?
Thanks, Stephen.
I copied the slf4j .jars to my lib and reran the server. The following errors appeared. Any ideas why these errors are being thrown now?
.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41) at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277) at org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
-
Stephen McKain over 9 yearsI added these files and now receive a new error when starting ther server. Any idea what may be causing it?
-
FDM over 8 yearsI extracted the Log4j zip from Apache and both were in the folder... of course that was bound to go wrong. ;) Thanks for saving me a ton of time and frustration.