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

来源:互联网 发布:网络投资挣钱 编辑:程序博客网 时间:2024/06/14 05:17

引入org.apache.activemq:activemq-all依赖与org.slf4j:log4j-over-slf4j导致运行时冲突产生“Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackOverflow”异常,这是由于org.apache.activemq引入的slf4j-log4j12.jar与pom文件中的 log4j-over-slf4j.jar循环调用导致的异常,从名字上可以看出slf4j-log4j12是将slf4j的日志桥接到log4j12上, log4j-over-slf4j则是将log4j的日志桥接到slf4j上,因而产生了循环调用。

下面我们看下org.apache.activemq:activemq-all这个maven依赖:


从上图可以看出,activemq-all只是将一些jar包打包起来而已,不是常规的maven构件,所以我们不能通过exclusion标签将slf4j-log4j12从activemq-all中删除,解决这个冲突有两种方法:

1.使用log4j日志框架,删除pom文件中的log4j-over-slf4j依赖

2.删除activemq-all,选择具体使用到的activemq组件,比如activemq-pool、activemq-core等