今天对一个工程代码做重构,这个工程原先是通过Spring的InitializingBean将自身注册到Zookeeper上,做的改造包括:
1)将注册中心的接口独立出来形成一个工程
2)基于注册中心基本接口扩展出Zookeeper实现
3)使用properties文件记录配置,取代原先Spring的XML配置
然后通过SPI机制实现自动注册,就可以脱离Spring容器使用了,但是在测试时,发现一直报错:
java.lang.NoClassDefFoundError : Could not initialize class org.apache.logging.log4j.util.Constants
很明显是log4j2出问题了,因为在第二处改造也引入了日志相关的依赖,自然而然就想到是不是日志冲突,但是整个项目所有位置都是用的同一个版本的log4j2,应该没有冲突。
项目中一共就四个依赖,采用排除法来确定问题范围:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>