使用Servlet连接JDBC时报com.mysql.jdbc.driver类未找到错误如何解决
报错原因
- 运行时类加载路径不一致:单独运行JDBC程序时,JVM加载的是你本地开发环境配置的项目依赖路径下的MySQL驱动包;但Servlet运行在Tomcat等Web容器中时,容器的类加载器只会读取两类位置的jar包:Web项目自身的
WEB-INF/lib目录下的jar、Web容器全局公共lib目录下的jar,不会读取开发环境配置的本地依赖路径内容,这是该问题最常见的诱因。 - 驱动类名拼写错误:注意MySQL驱动类的正确写法为:MySQL 5.x版本对应
com.mysql.jdbc.Driver,MySQL 8.0及以上版本对应com.mysql.cj.jdbc.Driver,类名首字母D为大写,若写成小写的driver也会触发类未找到错误。 - 依赖版本冲突:如果Web容器的全局lib目录下已经存在其他版本的MySQL驱动包,和项目中使用的驱动版本不匹配,也会引发类加载失败。
解决方案
- 将对应版本的MySQL驱动jar包复制到Web项目的
WEB-INF/lib目录下即可。如果使用Maven/Gradle管理依赖,需确认MySQL驱动的依赖scope没有设置为provided,该配置会标记依赖由容器提供,打包时不会将驱动包打入最终的部署包中。 - 核对驱动类全限定名的拼写,根据你使用的MySQL版本选择正确的类名。
- 若需要所有部署在当前Web容器的项目都共用同一个MySQL驱动,也可以将驱动包放到Tomcat等容器安装目录的
lib文件夹下,注意不要同时在容器全局lib和项目WEB-INF/lib下放不同版本的MySQL驱动,避免出现类加载冲突。 - 所有配置修改完成后,重启Web容器即可生效。
内容的提问来源于stack exchange,提问作者Prakash Dash
相关产品推荐
相关产品推荐

