Tomcat 9启动报错:无法找到org.apache.commons.dbcp.BasicDataSourceFactory
问题原因分析
核心原因
Tomcat 9.0.x版本默认采用Tomcat DBCP 2作为数据源实现,对应的工厂类是org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory,而报错中寻找的org.apache.commons.dbcp.BasicDataSourceFactory属于旧版Commons DBCP 1的类,两者分属不同的数据源体系,版本完全不兼容。
具体触发因素
- 配置未指定factory属性:你的
Resource配置里没有显式声明factory属性,Tomcat可能因环境残留配置或类路径逻辑错误,尝试加载旧版DBCP 1的工厂类。 - 依赖包版本不匹配:你放置的
tomcat-dbcp.jar若不是Tomcat 9.0.64对应的版本,会导致无法加载正确的DBCP 2工厂类;也可能是该jar包损坏、缺失关键类文件。 - 潜在类路径冲突:如果Tomcat的
lib目录中存在旧版commons-dbcp.jar(比如之前部署残留的文件),类加载器会优先加载旧版类,引发冲突。
内容的提问来源于stack exchange,提问作者Sam Donato
相关产品推荐
相关产品推荐

