最近构建一个web应用的过程中,保存修改的java代码后,Tomcat报错
java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/ComboPooledDataSource
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.c3p0.ComboPooledDataSource
项目的持久层使用原生JDBC+c3p0连接池,网上查了很多相关文章,说该问题是c3p0相关jar包未build path引起的,检查项目环境配置后发现原因并非如此。修改代码后,重新启动Tomcat服务器则不会报错。检查Tomcat设server.xml配置:
<Context docBase="dict" path="/dict" reloadable="true" source="org.eclipse.jst.jee.server:dict"/></Host>
解决办法:
修改tomcat目录下conf文件夹下的server.xml, 找到标签,把reloadble的属性值设为:reloadable=“false”。
或者
reloadable="true"的情况下,每次修改代码或配置之后,手动重新启动Tomcat。
这样之后暂时不会报错,且web项目运行正常,暂时在此记录一下。
2019.10.9更新:
关闭reloadable后每次修改文件都要重启服务器,等的我实在受不了,网上查了各种解决方案还是无果。偶然关闭了Tomcat服务器Server Options 的第一个选项后,不再报错了。。。具体原因现在还不清楚。