NoClassDefFoundError:org / slf4j / Logger [英] NoClassDefFoundError: org/slf4j/Logger

查看:181
本文介绍了NoClassDefFoundError:org / slf4j / Logger的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将Log4J2添加到我的应用程序。我将所有的Log4J2 .jar文件复制到LIB目录,并创建了Log4J2.xml文件来支持它。我的代码已更新,以导入必要的Log Manager和Logger API。然后我添加了静态的最终记录器方法,并在我的代码中调用了logger apis。在Eclipse中编译所有的文件。我继续在我的DEV机器上启动我的服务器来验证它。启动我的服务器后,我收到以下错误:`

  2014-10-19 21:39:31.753:INFO:oejs。服务器:jetty-8.1.14.v20131031 
2014-10-19 21:39:32.680:WARN:oejuc.AbstractLifeCycle:FAILED FoundationStartup:java.lang.NoClassDefFoundError:org / slf4j / Logger
java。 l 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)
java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
在java.lang.Cl ass.newInstance(未知源)
在org.eclipse.jetty.servlet.ServletContextHandler $ Context.createServlet(ServletContextHandler.java:1075)
在org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder .java:957)
在org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514)
在org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344 )
在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)$在$ org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221)

org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
在org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454)
在org。 eclipse.jetty.util.com ponent.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
在org.eclipse.jetty.util。 component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
在org.eclipse.jetty.server。 Server.doStart(Server.java:282)
在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.wst.server.preview。 internal.PreviewStarter.run(PreviewStarter.java:72)
在org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29)
导致:
java.lang.ClassNotFoundException:org.slf4j.Logger
在java.net.URLClassLoader $ 1.run(未知来源)
在java.net.URLClassLoader $ 1.run(未知来源)
at java.security.AccessController.doPrivileged(Native Method)
在java.net.URLClassLoader.fin dClass(未知源)
在java.lang.ClassLoader.loadClass(未知源)
at sun.misc.Launcher $ AppClassLoader.loadClass(未知源)
在java.lang.ClassLoader。 loadClass(未知源)
在org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424)
在org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377 )
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.log4j.LogManager.getLogger(LogManager.java:474)
在com.global.service.FoundationStartup。< clinit>(FoundationStartup.java:19)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
在java.lang.reflect.Constructor.newInstance(未知来源)
在java .lang.Class.newInstance0(未知源)
在java.lang.Class.newInstance(未知源)
在org.eclipse.jetty.servlet.ServletContextHandler $ Context.createServlet(ServletContextHandler.java:1075 )
在org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957)
在org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514)
在org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)
在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
在org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
在org.eclipse。 jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221)
在org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
在org.eclipse.jetty。 webapp.WebAppContext.doSta rt(WebAppContext.java:454)
在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.jetty.server.handler.HandlerCollection。 doStart(HandlerCollection.java:229)
在org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
在org.eclipse.jetty.server.handler.HandlerWrapper。 doStart(HandlerWrapper.java:95)
在org.eclipse.jetty.server.Server.doStart(Server.java:282)
在org.eclipse.jetty.util.component.AbstractLifeCycle.start( AbstractLifeCycle.java:64)
在org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72)
在org.eclipse.wst.server.preview.internal。 PreviewStarter.main(PreviewStarter.java:29)`

我的配置有什么问题?我需要下载另一个.JAR或这是一个配置问题?



谢谢,
Stephen。



我将slf4j .jars复制到我的lib并重新安装服务器。出现以下错误。任何有关这些错误现在被抛出的想法?

  .apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41 )
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org。 apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory。 getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory。 java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4j LoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging .slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory .java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51 )
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org。 apache.logging.slf4j.Lo g4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java: 41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org .apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory .getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory .java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j.SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)
在org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:51)
在org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
在org.apache.logging.slf4j .SLF4JLoggerContext.getLogger(SLF4JLoggerContext.java:41)


解决方案

答案隐藏在手册页面中:


将Log4j 2 SLF4J绑定(log4j-slf4j-impl-2.0.jar)与SLF4J适配器(log4j-to-slf4j)一起使用
-2.0.jar)不应该是
尝试,因为它会导致事件无休止地路由在
SLF4J和Log4j 2之间。


您希望保留 log4j-slf4j-impl-2.xx.jar和删除 log4j-to-slf4j-2.xx.jar 。


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)

解决方案

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.

这篇关于NoClassDefFoundError:org / slf4j / Logger的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆