java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

项目中已经使用logback替换log4j但是生成发版时仍然报错了:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory

看表像log4j的类一直找不到,后来加了这个类依赖的jar还是不行。一番百度基本确定主要其实并不是少jar包导致,而是jar冲突导致,但是项目里面早就没有引用log4j。且我把后台所有用logger 的类里面引用log4j的logger 都强转换为logback的logger之后仍然不行。

解决方式
===================
通过mvn dependency:tree 执行后发现 后台项目引用的back-sso-client 的jar是对log4j依赖的。找到所有有依赖于log4j的jar,强制排除

pom 里面 强制对jar 排除依赖
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>

======
log4j-over-slf4j.jar 和 slf4j-log4j12.jar 俩个jar 并存会到值loggerFactory 的启动失败。

猜你喜欢

转载自my.oschina.net/u/2337666/blog/1819875