Tomcat中REST服务连接远程MySQL遇ClassNotFoundException求助
这个报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver本质是Tomcat运行时的类路径里找不到MySQL驱动jar包——你在IntelliJ里把驱动添加成项目库,只是让IDE编译代码时能找到它,但部署到Tomcat运行时,驱动并没有被放到Tomcat能加载到的位置。
给你几个靠谱的解决办法:
直接把驱动jar放到Tomcat的lib目录
这是最直接的方式:找到你的Tomcat安装根目录,进入lib文件夹,把mysql-connector-java-5.1.46-bin.jar复制进去,然后重启Tomcat。Tomcat启动时会自动加载这个目录下的所有jar包,这样运行时就能找到驱动类了。在IntelliJ里配置Artifact,确保驱动被打包进部署包
如果你不想修改Tomcat的全局lib目录,可以这么做:- 打开
File → Project Structure → Artifacts - 在列表里找到你的Web应用Artifact,右键选择
Add → Library Files - 选中你之前添加的MySQL驱动库,确认添加
- 重新构建Artifact,然后部署到Tomcat,这样你的部署包(war包或 exploded目录)里就会包含驱动jar
- 打开
检查驱动类名是否匹配版本
你用的是MySQL 5.1.46的驱动,代码里写Class.forName("com.mysql.jdbc.Driver")是完全正确的;如果是MySQL 8.x的驱动,才需要改成com.mysql.cj.jdbc.Driver,同时URL要加时区参数,不过你的情况不用改这个。
另外注意:别同时放多个版本的MySQL驱动jar,比如别把mysql-connector-java-5.1.46.jar和mysql-connector-java-5.1.46-bin.jar都放进去,选其中一个就行,避免类加载冲突。
内容的提问来源于stack exchange,提问作者JollyRoger

