最近对接aliyum.mns 时提示:
Could not initialize class org.apache.log4j.Log4jLoggerFactory
最后跟踪代码,发现:com.aliyun.mns.client.Utils 类无法加载,报错代码位置:
原因: 这是因为 本项目中引用 slf4j-log4j12 与 aliyun.mns 引用 log4j 冲突 (2个有循环依赖,不可在同包下共存,具体可以了解 slf4j,log4j)
最后跟踪代码,发现:com.aliyun.mns.client.Utils 类无法加载,报错代码位置:
com.aliyun.mns.client.Utils 类: public static Logger logger = Logger.getLogger(Utils.class);
原因: 这是因为 本项目中引用 slf4j-log4j12 与 aliyun.mns 引用 log4j 冲突 (2个有循环依赖,不可在同包下共存,具体可以了解 slf4j,log4j)
解决: 排除本项目中slf4j-log4j12 引用。
例如: 我的项目中net.sf.dozer 有slf4j-log4j12引用,排除掉->
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>