JDBC连接时触发ClassNotFoundException问题求助
JDBC ClassNotFoundException 排查与解决
常见原因及修复方案
缺少数据库驱动jar包
JDBC必须依赖对应数据库的驱动类才能建立连接,比如MySQL的com.mysql.cj.jdbc.Driver,如果没把驱动jar包加入项目,JVM肯定找不到这个类。- 修复方式:
- 手动下载对应数据库版本的驱动jar(比如MySQL 8.x就用mysql-connector-java 8.x系列),放到项目的
lib文件夹,然后在IDE里右键jar包选择「Add as Library」。 - 用Maven/Gradle的话,直接在配置文件里加依赖,比如Maven的pom.xml:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>
- 手动下载对应数据库版本的驱动jar(比如MySQL 8.x就用mysql-connector-java 8.x系列),放到项目的
- 修复方式:
驱动类名拼写错误
不同数据库或版本的驱动类名不一样,比如MySQL 5.x是com.mysql.jdbc.Driver,8.x改成了com.mysql.cj.jdbc.Driver,写错的话直接找不到类。- 修复方式:查对应数据库的官方文档,确认驱动类全名,修正
Class.forName("xxx")里的字符串。
- 修复方式:查对应数据库的官方文档,确认驱动类全名,修正
类路径配置异常
就算加了jar包,IDE或运行环境没把它加到类路径里也白搭。- 修复方式:
- IDE里重新添加jar为依赖库;
- 命令行运行时用
-cp参数指定类路径,比如:java -cp .:mysql-connector-java-8.0.33.jar YourMainClassName
- 修复方式:
代码自查点
检查你main方法里的驱动加载代码,比如:
// 注意MySQL 8.x的驱动类是com.mysql.cj.jdbc.Driver,不是旧版本的com.mysql.jdbc.Driver Class.forName("com.mysql.cj.jdbc.Driver");
确认类名正确,同时驱动包已经正确引入项目。
内容的提问来源于stack exchange,提问作者Chamithu Dinsara
相关产品推荐
相关产品推荐

