web-dev-qa-db-ja.com

NoClassDefFoundError:org / slf4j / Logger

アプリケーションにLog4J2を追加しました。すべてのLog4J2 .jarファイルをLIBディレクトリーにコピーし、それをサポートするLog4J2.xmlファイルを作成しました。必要なLog ManagerおよびLogger APIをインポートするようにコードが更新されました。次に、静的な最終ロガーメソッドを追加し、コードでロガーAPIを呼び出しました。 Eclipseでコンパイルされたすべてのファイル。検証のために、DEVマシンでサーバーを起動します。サーバーを起動すると、次のエラーが表示されました: `

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

私の設定の何が問題になっていますか?別の.JARをダウンロードする必要がありますか、それとも構成の問題ですか?

ありがとう、スティーブン。

私はslf4j .jarsを自分のlibにコピーして、サーバーを再実行しました。次のエラーが発生しました。これらのエラーが現在スローされている理由はありますか?

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

答えは manual ページに隠されています:

SLF4Jアダプター(log4j-to-slf4j-2.0.jar)と一緒にLog4j 2 SLF4Jバインディング(log4j-slf4j-impl-2.0.jar)を使用すると、イベントがSLF4J間で無限にルーティングされるため、絶対に使用しないでください。およびLog4j 2。

keeplog4j-slf4j-impl-2.xx.jarとremovelog4j-to-slf4j-2.xx.jar。

19
Remko Popma

はい。 SLF4J jarファイルが必要です。あなたはそれをダウンロードすることができます: http://www.slf4j.org/download.html

1
triggerNZ

NoClassDefFoundErrorClassNotFoundExceptionは、実行時に特定のクラスが欠落していることを指定します。

クラスパスにさまざまなSLF4J実装.jarファイルの1つを提供する必要があります

1
Ankur Singhal