【发布时间】:2012-03-01 15:13:39
【问题描述】:
我有一个奇怪的问题。我有这个 Java 应用程序,它以前部署在 tomcat 中,并愉快地使用 logback classic 作为 slf4j 实现。现在,当我们尝试在 jboss 7.1.final 服务器中部署相同的应用程序时,它甚至没有部署应用程序 maoning about
java.lang.ClassCastException: org.slf4j.impl.Slf4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
这是有问题的代码行
final LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
拥有他的类是弹簧注入的并且失败了 - 因此无法部署整个应用程序。有人对此有解决方案吗?提前致谢
查看此站点和其他论坛后,我意识到 Jboss 7 捆绑了它自己的 slf4j 实现,并实现了与 logback 中的 LoggerContext 相同的 ILoggerFactory 接口。我们的应用程序试图获取相同的实例,但应用程序服务器强加了它自己的 slf4j 实现。
我尝试修改 jboss\modules\org\slf4j\impl\main 中的 module.xml 并将其指向 logback jars。
<resources>
<resource-root path="logback-classic-0.9.28.jar"/>
<resource-root path="logback-core-0.9.28.jar"/>
</resources>
现在当我启动应用程序时出现严重错误
Exception starting filter WicketFilter: java.lang.ClassCastException: ch.qos.logback.classic.LoggerContext cannot be cast to ch.qos.logback.classic.LoggerContext
我束手无策。任何 jboss 和 logback 专家都可以提供帮助吗? 提前致谢
【问题讨论】:
-
您是否在
/lib目录和EAR/WAR 中都有logback*.jar? -
嗨,托马斯。我的war文件的WEB-INF/lib目录中有logback jars。如上所述,我已将 jboss org.slf4j.Impl 模块中的 module.xml 更改为指向 logback jar(经典和核心),它们都与 module.xml 位于同一文件夹中。