org.slf4j.helpers.NOPLoggerFactory 无法转换为 ch.qos.logback.classic.LoggerContext

问题描述 投票:0回答:2

当我在maven(m2e)中使用logback时,出现以下错误。环境:JBOSS 7.1.1,maven,eclipse。但如果我只是作为主类单独运行,它就可以正常工作。我无法弄清楚为什么会出现此错误,任何人都可以帮助我解决此问题并找到解决方案。

错误

17:24:23,675 ERROR [stderr] java.lang.ClassCastException: org.slf4j.helpers.NOPLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext 

17:24:23,681 ERROR [stderr] at com.zreflect.emyed.whiteboard.pubsub.EventLoggerAsync.logStart(EventLoggerAsync.java:116) 

17:24:23,683 ERROR [stderr] at com.zreflect.emyed.whiteboard.pubsub.EventLoggerAsync.onDisconnect(EventLoggerAsync.java:62) 

17:24:23,684 ERROR [stderr] at org.atmosphere.cpr.AtmosphereResourceImpl.onDisconnect(AtmosphereResourceImpl.java:817) 

17:24:23,686 ERROR [stderr] at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:761) 

17:24:23,688 ERROR [stderr] at org.atmosphere.cpr.AtmosphereResourceImpl.notifyListeners(AtmosphereResourceImpl.java:742) 

17:24:23,690 ERROR [stderr] at org.atmosphere.cpr.AsynchronousProcessor.cancelled(AsynchronousProcessor.java:601) 

17:24:23,691 ERROR [stderr] at org.atmosphere.container.BlockingIOCometSupport.cancelled(BlockingIOCometSupport.java:172) 

17:24:23,693 ERROR [stderr] at org.atmosphere.cpr.AsynchronousProcessor$1.run(AsynchronousProcessor.java:119) 

17:24:23,694 ERROR [stderr] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 

17:24:23,696 ERROR [stderr] at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 

17:24:23,698 ERROR [stderr] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 

17:24:23,699 ERROR [stderr] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 

17:24:23,703 ERROR [stderr] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) 

17:24:23,707 ERROR [stderr] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) 

17:24:23,715 ERROR [stderr] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 

17:24:23,716 ERROR [stderr] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 

17:24:23,718 ERROR [stderr] at java.lang.Thread.run(Thread.java:662)
jboss7.x slf4j logback
2个回答
3
投票

该错误表明

com.zreflect.emyed.whiteboard.pubsub.EventLoggerAsync
类期望得到
ch.qos.logback.classic.LoggerContext
,但它获得了
org.slf4j.helpers.NOPLoggerFactory
。当某些代码尝试转换
org.slf4j.LoggerFactory.getILoggerFactory
的返回值并且 slf4j 绑定到 NOP 实现时,通常会发生这种情况,因为类路径上没有可用的 slf4j 绑定。这通常伴随着无法加载类找不到 SLF4J 提供者错误消息。

请阅读 SLF4J 手册中的 Hello world 示例,它将解释 SLF4J 背后的总体思路。


0
投票

仅供参考,如果有帮助的话,我也遇到了同样的问题:

java.lang.ClassCastException: class org.slf4j.helpers.NOPLoggerFactory cannot be cast to class ch.qos.logback.classic.LoggerContext

使用 SLF4J 2.0.3(logback 1.3.4)时使用 JBoss Wildfly 7.4,这是由于 https://jira.qos.ch/browse/SLF4J-548 以及使用了错误的类加载器。 更新到 SLF4J 2.0.4 解决了这个 NOPLogger 问题

© www.soinside.com 2019 - 2024. All rights reserved.