Spring 內部**硬編碼依賴 Jakarta Commons Logging (JCL)** 作為日誌門面介面。org.springframework.util.LogFactory 靜態初始化時會尋找 LogFactory 實作,若類路徑缺少 commons-logging.jar 會拋 NoClassDefFoundError。
slf4j-api 做門面,搭配 slf4j-log4j12 綁定 Log4j 實作。commons-logging:<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
slf4j-log4j12):<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.36</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
jcl-over-slf4j 讓 Spring 以為在用 JCL,實際轉給 SLF4J → Logback/Log4j,**完全移除 commons-logging.jar**,避免類衝突。