Java连接MySQL时Driver未找到及ClassNotFoundException问题求助
解决MySQL驱动找不到的问题(ClassNotFoundException)
我一眼就看出你踩了MySQL Connector/J版本变更的坑,这是Java连MySQL时很常见的问题,我来一步步帮你搞定:
问题根源
你现在遇到的java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver,本质是代码里写的Driver类名和你实际用的驱动版本不匹配:
- MySQL Connector/J 5.x版本的Driver类是
com.mysql.jdbc.Driver - 8.0及以上版本的Driver类已经改成了
com.mysql.cj.jdbc.Driver,同时还要求JDBC URL必须指定时区参数
具体解决方案
1. 先确认你的驱动版本
去看你Maven pom.xml里的依赖版本:
- 如果是8.0+(比如
8.0.33),用新的Driver类名+带时区的URL - 如果是5.x(比如
5.1.49),用旧的Driver类名即可
2. 修正代码中的Driver类名
- 若用8.0+驱动,把
Class.forName("com.mysql.jdbc.Driver");改成:Class.forName("com.mysql.cj.jdbc.Driver"); - 另外提一句:从JDBC 4.0开始,只要驱动在类路径里,
Class.forName()其实可以省略,但保留也没问题,只要类名正确就行
3. 补充JDBC URL的时区参数(仅8.0+驱动需要)
8.0+版本必须指定时区,不然会抛出时区相关的错误,比如把URL改成:
String url = "jdbc:mysql://" + host + ":" + port + "/" + database + "?serverTimezone=UTC";
国内用户可以换成serverTimezone=Asia/Shanghai更合适
4. 完善代码细节
你的代码里database变量是空的,记得填上实际的数据库名称;password也要对应你的MySQL root密码。这里给你一个修正后的完整代码示例(基于8.0+驱动):
package com.CloudyProductions.GCDSS; import java.sql.*; public class mysql { public static Connection c; static String host = "localhost"; static String port = "3306"; static String database = "your_database_name"; // 替换成你的数据库名 static String username = "root"; static String password = "your_root_password"; // 替换成你的密码 static String timezone = "Asia/Shanghai"; // 按需调整时区 public static void connect() { try { // 8.0+驱动对应的Driver类 Class.forName("com.mysql.cj.jdbc.Driver"); String url = String.format("jdbc:mysql://%s:%s/%s?serverTimezone=%s", host, port, database, timezone); c = DriverManager.getConnection(url, username, password); System.out.println("数据库连接成功!"); } catch (ClassNotFoundException e) { System.err.println("错误:找不到MySQL驱动类,请检查驱动版本和类名是否匹配"); e.printStackTrace(); } catch (SQLException e) { System.err.println("错误:数据库连接失败,请检查URL、用户名、密码或目标数据库是否存在"); e.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } }
5. 确保Maven依赖正确加载
如果是8.0+版本,pom.xml里的依赖应该是这样的:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>
执行mvn clean install让Maven重新下载依赖,确保驱动jar被正确引入到项目中。要是你需要打包成独立jar运行,记得用maven-shade-plugin这类插件把驱动jar包含进去,避免运行时又找不到类。
内容的提问来源于stack exchange,提问作者Cloudy Productions




