开发常见错误之 : Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar

Posted 笨小孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发常见错误之 : Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar相关的知识,希望对你有一定的参考价值。

SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError.
SLF4J: See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.
Exception in thread "main" Java.lang.ExceptionInInitializerError
at org.apache.log4j.LogManager.getLogger(LogManager.java:44)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:66)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:288)
....
Caused by: java.lang.IllegalStateException: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflowError. See also http://www.slf4j.org/codes.html#log4jDelegationLoop for more details.
at org.apache.log4j.Log4jLoggerFactory.<clinit>(Log4jLoggerFactory.java:51)
... 11 more

 

原因是引用了两个关于log4j的jar,造成死循环

log4j-over-slf4j-1.7.7.jar

slf4j-log4j12-1.7.7.jar

但只引用slf4j-log4j12-1.7.7.jar会提示org.apache.log4j.Level这个class找不到

要使用log4j记录日志,其实只用引用log4j-over-slf4j-1.7.7.jar就可以了,一般在maven中引入其他依赖时,可以排除对log4j的引用:

<exclusion>
    <groupid>log4j</groupid>
    <artifactId>log4j</artifactId>
</exclusion>
<exclusion>
    <groupid>org.slf4j</groupid>
    <artifactId>elf4j-log4j12</artifactId>
</exclusion>

 











以上是关于开发常见错误之 : Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar的主要内容,如果未能解决你的问题,请参考以下文章

Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflow

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

SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path异常分析

关于Android开发模拟器运行出现Detected ADB对话框

Myeclipse报错:“Versions of Spring facet could not be detected”的解决方法:译

Myeclipse报错:“Versions of Spring facet could not be detected”的解决方法:译