You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Java JDBC连接MySQL时的No suitable driver错误?

问题:如何解决JDBC连接MySQL时的"No suitable driver found"错误?

我正在开发一个用JDBC连接数据库的Java应用,折腾一周还是反复出现下面的错误,我是Java和JDBC的新手:

java.sql.SQLException: No suitable driver found for "jdbc:mysql://localhost:3306/mysql"
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:270)
    at com.java.r2pgdm.InputConnection.Connect(InputConnection.java:32)
    at com.java.r2pgdm.InputConnection.<init>(InputConnection.java:26)
    at com.java.r2pgdm.App.main(App.java:23)
Exception in thread "main" java.lang.NullPointerException
    at com.java.r2pgdm.InputConnection.GetMetaData(InputConnection.java:42)
    at com.java.r2pgdm.InputConnection.<init>(InputConnection.java:27)
    at com.java.r2pgdm.App.main(App.java:23)

系统环境:Ubuntu 20.04;Java 1.8;MySQL 8.0.33

已做的操作:

  1. 安装并启动了MySQL 8.0.33,进程监听情况如下:
COMMAND       PID            USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
systemd-r     258 systemd-resolve   13u  IPv4  12197628      0t0  TCP 127.0.0.53:53 (LISTEN)
sshd          317            root    3u  IPv4  12189367      0t0  TCP *:22 (LISTEN)
mysqld    1838279           mysql   21u  IPv6 205389761      0t0  TCP *:33060 (LISTEN)
mysqld    1838279           mysql   23u  IPv6 205389764      0t0  TCP *:3306 (LISTEN)
java      2863309          ubuntu  308u  IPv6  75294475      0t0  TCP 10.15.5.184:7077 (LISTEN)
java      2863309          ubuntu  310u  IPv6  75281272      0t0  TCP *:8080 (LISTEN)
  1. 把mysql-connector-j-8.0.33.jar放到了Java应用目录里:
drwxrwxr-x 5 ubuntu ubuntu      12 Dec  1 09:39 ./
drwxrwxr-x 7 ubuntu ubuntu      16 Nov 30 19:35 ../
-rw-rw-r-- 1 ubuntu ubuntu    1771 Nov 27 15:36 .classpath
-rw-rw-r-- 1 ubuntu ubuntu    2335 Nov 27 15:36 .factorypath
-rw-rw-r-- 1 ubuntu ubuntu     541 Nov 27 15:36 .project
drwxrwxr-x 2 ubuntu ubuntu       6 Nov 27 15:36 .settings/
-rw-rw-r-- 1 ubuntu ubuntu     179 Dec  1 09:39 config.ini
-rw-rw-r-- 1 ubuntu ubuntu    2645 Dec  1 09:39 dependency-reduced-pom.xml
-rw-r--r-- 1 ubuntu ubuntu 2481560 Nov 30 20:54 mysql-connector-j-8.0.33.jar
-rw-rw-r-- 1 ubuntu ubuntu    3870 Nov 29 21:17 pom.xml
drwxrwxr-x 4 ubuntu ubuntu       4 Nov 27 15:36 src/
drwxrwxr-x 9 ubuntu ubuntu      12 Dec  1 10:18 target/
  1. 在pom.xml里添加了依赖:
<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.33</version>
    </dependency>
  1. 应用目录外还有一些.sql文件,不知道用途:
drwxrwxr-x  7 ubuntu ubuntu     16 Nov 30 19:35 ./
drwxr-xr-x 22 ubuntu ubuntu     35 Dec  1 11:18 ../
drwxrwxr-x  8 ubuntu ubuntu     13 Nov 27 15:36 .git/
-rw-rw-r--  1 ubuntu ubuntu    342 Nov 27 15:36 .gitignore
drwxrwxr-x  2 ubuntu ubuntu      4 Nov 27 15:36 .vscode/
-rw-rw-r--  1 ubuntu ubuntu   1068 Nov 27 15:36 LICENSE
-rw-rw-r--  1 ubuntu ubuntu   1459 Nov 27 15:36 README.md
-rw-rw-r--  1 ubuntu ubuntu   1240 Nov 27 15:36 Schema-Oracle.sql
-rw-rw-r--  1 ubuntu ubuntu   1225 Nov 27 15:36 Schema.sql
-rw-rw-r--  1 ubuntu ubuntu   2645 Nov 30 11:05 dependency-reduced-pom.xml
drwxrwxr-x  2 ubuntu ubuntu      4 Nov 27 15:36 exports/
drwxrwxr-x  5 ubuntu ubuntu     12 Dec  1 11:18 java-project/
-rw-rw-r--  1 ubuntu ubuntu 348929 Nov 27 15:36 northwind.postgre.sql
drwxrwxr-x  2 ubuntu ubuntu      5 Dec  1 09:24 sample_java/
-rw-rw-r--  1 ubuntu ubuntu    586 Nov 27 15:36 script.cypher
-rw-rw-r--  1 ubuntu ubuntu 198552 Nov 27 15:36 world.sql

解决方案

一、解决"No suitable driver found"错误

这个问题核心是JDBC驱动未被正确加载到应用类路径,按以下步骤修复:

  1. 修正pom.xml依赖配置
    MySQL 8.0之后的驱动artifactId已从mysql-connector-java改为mysql-connector-j,groupId也更新为com.mysql,把pom.xml里的依赖改成:
<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <version>8.0.33</version>
</dependency>

修改后执行mvn clean install重新构建项目,让Maven自动下载并管理驱动。

  1. 确保驱动在类路径中生效
  • 用IDE运行时:右键项目→Maven→Update Project,让IDE识别最新的依赖;
  • 命令行运行时:启动命令要把驱动jar包加入类路径,比如:
java -cp target/your-app.jar:mysql-connector-j-8.0.33.jar com.java.r2pgdm.App

也可以用Maven的maven-shade-plugin把驱动打包到可执行jar里,避免手动处理类路径。

  1. 检查JDBC URL格式
    代码里的URL不要带多余引号,并且MySQL 8.0建议加上时区参数避免报错,正确格式示例:
String url = "jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezone=UTC";
  1. 可选:显式加载驱动类
    Java 1.6后无需显式加载,但如果问题仍存在,在获取连接前添加一行代码:
Class.forName("com.mysql.cj.jdbc.Driver");

注意MySQL 8.0的驱动类是com.mysql.cj.jdbc.Driver,不是旧版的com.mysql.jdbc.Driver。

二、关于外部.sql文件的用途

这些是项目自带的数据库示例脚本,和当前JDBC连接问题无关:

  • Schema.sql/Schema-Oracle.sql:创建数据库表结构的脚本,后者适配Oracle数据库;
  • northwind.postgre.sql:PostgreSQL版本的Northwind示例数据库数据导入脚本;
  • world.sql:MySQL官方提供的世界数据库示例脚本,包含国家、城市等数据;
  • script.cypher:Neo4j图数据库的查询脚本,用于操作图数据。

内容的提问来源于stack exchange,提问作者Neal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:24:52