web-dev-qa-db-fra.com

NoClassDefFoundError: org/slf4j/enregistreur

J'ai ajouté Log4J2 à mon application. J'ai copié tous les fichiers .jar de Log4J2 dans le répertoire LIB et créé le fichier Log4J2.xml pour le prendre en charge. Mon code a été mis à jour pour importer les API de gestionnaire de journal et de journalisation nécessaires. J'ai ensuite ajouté la méthode du dernier enregistreur statique et appelé l'apis de l'enregistreur dans mon code. Tout le fichier compilé dans Eclipse. Je commence à démarrer mon serveur sur ma machine DEV pour le valider. Au démarrage de mon serveur, j'ai reçu l'erreur suivante:

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

Quel est le problème avec ma configuration? Dois-je télécharger un autre fichier .JAR ou s'agit-il d'un problème de configuration?

Merci, Stephen.

J'ai copié le fichier .jars slf4j dans ma bibliothèque et relancé le serveur. Les erreurs suivantes sont apparues. Des idées pour lesquelles ces erreurs sont jetées maintenant?

.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

La réponse est cachée dans le manual page:

Utilisation conjointe de la liaison Log4j 2 SLF4J (log4j-slf4j-impl-2.0.jar) avec l'adaptateur SLF4J (log4j-to-slf4j-2.0.jar) ne devrait jamais être tenté, car les événements seront acheminés indéfiniment entre SLF4J et Log4j 2.

Vous voulez conserver le log4j-slf4j-impl-2.xx.jar et remove le log4j-to-slf4j-2.xx.jar.

18
Remko Popma

Oui. vous avez besoin du fichier jar SLF4J. Vous pouvez le télécharger sur: http://www.slf4j.org/download.html

1
triggerNZ

Un NoClassDefFoundError avec ClassNotFoundException spécifie que la classe particulière est manquante au moment de l'exécution. 

Vous devez fournir l'un des divers fichiers .jar d'implémentation SLF4J dans le chemin d'accès aux classes.

0
Ankur Singhal