2014-10-20 27 views
7

我將Log4J2添加到了我的應用程序中。我將所有的Log4J2 .jar文件複製到LIB目錄,並創建了Log4J2.xml文件來支持它。我的代碼已更新,以導入必要的日誌管理器和記錄器API。然後我添加了靜態最終記錄器方法,並在我的代碼中調用記錄器apis。 Eclipse中的所有編譯文件。我繼續在我的DEV機器上啓動我的服務器來驗證它。在啓動我的服務器時,我收到以下錯誤:'NoClassDefFoundError:org/slf4j/Logger

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或者這是一個配置問題?

謝謝, Stephen。

我將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) 
+0

現在你在SLF4J配置中有一個循環依賴關係... – 2014-10-20 06:56:20

回答

17

答案就隱藏在manual頁面提供各種SLF4J實施的一個.jar文件:

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.

你想保持 log4j的,SLF4J -impl-2.xx.jar和刪除 log4j-to-slf4j-2.xx.jar。

+0

我從Apache提取了Log4j壓縮文件,兩者都在文件夾中......當然這肯定會出錯。 ;)謝謝你爲我節省了大量的時間和挫折。 – FDM 2016-02-05 11:14:53

1

是的。你需要SLF4J jar文件。您可以通過以下網址下載:http://www.slf4j.org/download.html

+0

我添加了這些文件,現在在啓動服務器時收到一個新錯誤。任何想法可能導致它? – 2014-10-20 05:39:39

+0

什麼是錯誤?也許更新這個問題? – triggerNZ 2014-10-20 06:06:34

0

A NoClassDefFoundErrorClassNotFoundException指定特定類在運行時缺失。

你必須在classpath