Spring MVC3+Maven+Hibernate项目部署Tomcat8.5启动失败求助
解决Tomcat 8.5启动失败及mysql-connector-java相关警告问题
重装系统后恢复项目遇到这种问题太常见了,基本都是JDBC依赖的配置出了纰漏——要么jar包丢了,要么放错位置,要么版本不兼容。我给你梳理几个排查和解决的步骤:
先确认mysql-connector-java jar包有没有在正确的位置
系统重装后,之前本地存的依赖包肯定没了。如果是Maven管理的项目,先检查pom.xml里有没有这个依赖:<!-- MySQL 8.0+适配版本 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <scope>runtime</scope> </dependency> <!-- MySQL 5.x适配版本 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> <scope>runtime</scope> </dependency>有依赖的话就执行
mvn clean install重新拉取;如果是普通Web项目,一定要把jar包放到项目的WEB-INF/lib目录下,别同时把它放到Tomcat的全局lib目录里,不然会触发类加载冲突,直接导致容器启动失败。检查Eclipse的项目构建与部署配置
导入Eclipse后经常会出现路径失效的情况:- 右键项目 → Build Path → Configure Build Path,切换到
Libraries标签,看看mysql-connector-java的条目有没有红色感叹号——有的话就删掉,重新添加WEB-INF/lib里的jar包。 - 再检查部署配置:右键项目 → Properties → Deployment Assembly,确保
WEB-INF/lib目录被包含在部署列表里,不然Tomcat启动时根本找不到这个jar包。
- 右键项目 → Build Path → Configure Build Path,切换到
深挖日志找具体报错原因
你贴的只是顶层的容器启动失败报错,真正的问题藏在Caused by里。去Tomcat的logs目录打开catalina.out或者localhost.log,往下翻找到异常链的最底层:- 如果是
ClassNotFoundException: com.mysql.cj.jdbc.Driver(或旧版的com.mysql.jdbc.Driver),那就是jar包没被正确加载,回到前两步检查; - 如果是
NoClassDefFoundError或者类冲突相关的错误,那就是重复加载了jar包,把多余的那个删掉就行。
- 如果是
确认版本兼容性
Tomcat 8.5对JDBC驱动版本有要求:- 要是你的MySQL是8.0及以上版本,必须用8.x系列的
mysql-connector-java,同时要把配置文件里的驱动类改成com.mysql.cj.jdbc.Driver,JDBC URL还要加上时区参数,比如jdbc:mysql://localhost:3306/your_db?serverTimezone=UTC; - 要是MySQL是5.x版本,用5.1.x系列的驱动就没问题,驱动类用
com.mysql.jdbc.Driver就行。
- 要是你的MySQL是8.0及以上版本,必须用8.x系列的
内容的提问来源于stack exchange,提问作者Paul Marcu
相关产品推荐
相关产品推荐

