Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path

来源:互联网 发布:信息技术网络研修总结 编辑:程序博客网 时间:2024/06/06 08:35

Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path解决

最近在构建我的gradle项目添加日志时突然报错,具体报错如下

SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError. SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.

我用的日志组合为log4j+slf4j,具体使用jar包如下:

  • slf4j-api-1.7.25.jar
  • slf4j-log4j12-1.7.25.jar
  • log4j-1.2.17.jar

build.gradle 只引入了slf4j-log4j12-1.7.25,了、因为要依赖另外两个所以就没写。结果运行项目就发现日志无法使用了。


解决

去给的网址看了一下 http://www.slf4j.org/codes.html 上面说 log4j-over-slf4j.jar 和slf4j-log4j12.jar冲突了,可我找遍了整个项目下的jar包,都没有发现log4j-over-slf4j.jar, 真是神奇!百度,Google上面的解决方案都是把其中一个jar包干掉,但我的项目确实没有这个log4j-over-slf4j.jar,试着在build.gradle中干掉slf4j-log4j12,报错倒是不报了,可是所有的日志jar都没了!这真是神奇!

以下是我的解决,至少对于我是有效的

既然说是log4j-over-slf4j.jar多余,但又找不到,无奈只好在build.gradle加入如下配置:

configurations {    //在整个构建过程中排除org.slf4j:log4j-over-slf4j    all*.exclude group: 'org.slf4j', module: 'log4j-over-slf4j'}

然后就问题就暂时解决了,至于这个log4j-over-slf4j.jar到底隐藏在哪,还是一个未解之谜。。。有知道的可以评论下。