java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
C3P0 從 0.9.5 版本起,將序列化相關類拆分到獨立模塊 mchange-commons-java。若項目僅引入 c3p0-0.9.5.x.jar 而缺少該依賴,運行時會因找不到 com.mchange.v2.ser.Indirector 類而拋出 NoClassDefFoundError。
在 Maven/Gradle 中添加缺失依賴:
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.2.11</version> <!-- 與 C3P0 版本對應,查看 MVN Repository 確認 -->
</dependency>
implementation 'com.mchange:mchange-commons-java:0.2.11'
| C3P0 版本 | mchange-commons-java 版本 |
|---|---|
| 0.9.5.2 | 0.2.11 |
| 0.9.5.5 | 0.2.15 |
| 0.9.6.x | 0.2.19+ |
建議:優先使用 c3p0 的 BOM 或父 POM 管理傳遞依賴,避免版本不匹配。
maven-shade-plugin 打包 Fat Jar,確保 mchange-commons-java 類未被誤排除。DataSourceAutoConfiguration 並手動配置,注意依傳遞依賴完整性。