it-swarm.com.de

NoClassDefFoundError: org/slf4j/Logger

Ich habe Log4J2 zu meiner Anwendung hinzugefügt. Ich habe alle Log4J2-JAR-Dateien in das Verzeichnis LIB kopiert und die Datei Log4J2.xml erstellt, um sie zu unterstützen. Mein Code wurde aktualisiert, um die erforderlichen Log Manager- und Logger-APIs zu importieren. Dann fügte ich die statische Methode für den finalen Logger hinzu und rief den Logger apis in meinem Code auf. Alle kompilierten Dateien in Eclipse. Ich fahre fort, meinen Server auf meiner DEV-Maschine zu starten, um ihn zu überprüfen. Beim Starten meines Servers wurde folgende Fehlermeldung angezeigt: `

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

Was stimmt nicht mit meiner Konfiguration? Muss ich ein weiteres .JAR herunterladen oder handelt es sich um ein Konfigurationsproblem?

Danke, Stephen.

Ich habe die slf4j .jars in meine lib kopiert und den Server erneut ausgeführt. Die folgenden Fehler sind aufgetreten. Irgendwelche Ideen, warum diese Fehler jetzt geworfen werden?

.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)
9
Stephen McKain

Die Antwort ist in der Anleitung Seite versteckt:

Verwendung der Log4j 2 SLF4J-Bindung (log4j-slf4j-impl-2.0.jar) zusammen mit dem SLF4J-Adapter (log4j-to-slf4j-2.0.jar) sollte niemals .__ sein. versucht, da dies dazu führt, dass Ereignisse endlos zwischen .__ geroutet werden. SLF4J und Log4j 2.

Sie möchten behalten log4j-slf4j-impl-2.xx.jar und entfernen log4j-to-slf4j-2.xx.jar.

18
Remko Popma

Ja. Sie benötigen die SLF4J-JAR-Datei. Sie können es herunterladen unter: http://www.slf4j.org/download.html

1
triggerNZ

Eine NoClassDefFoundError mit ClassNotFoundException gibt an, dass die bestimmte Klasse zur Laufzeit fehlt. 

Sie müssen eine der verschiedenen SLF4J-Implementierungs-.jar-Dateien im Klassenpfad angeben

0
Ankur Singhal