首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

C3P0 連接池常見報錯:NoClassDefFoundError: Indirector 根因與解決方案

     編輯:Java 綜合教學

錯誤現象

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 中添加缺失依賴:

Maven

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>mchange-commons-java</artifactId>
    <version>0.2.11</version> <!-- 與 C3P0 版本對應,查看 MVN Repository 確認 -->
</dependency>

Gradle

implementation 'com.mchange:mchange-commons-java:0.2.11'

版本對應參考表

C3P0 版本mchange-commons-java 版本
0.9.5.20.2.11
0.9.5.50.2.15
0.9.6.x0.2.19+

建議:優先使用 c3p0 的 BOM 或父 POM 管理傳遞依賴,避免版本不匹配。

避坑提示

  • 若使用 maven-shade-plugin 打包 Fat Jar,確保 mchange-commons-java 類未被誤排除。
  • Spring Boot 2.x 默認使用 HikariCP,若強制用 C3P0 需排除 DataSourceAutoConfiguration 並手動配置,注意依傳遞依賴完整性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved