eclipse连接mysql驱动jar包如何正确导入
在eclipse中配置mysql,核心就三步:装对版本的Connector/J驱动、把jar包加进项目依赖、用匹配的URL参数写连接代码。 别被网上五花八门的教程带偏,只要把下面这几步走扎实,五分钟内就能跑通连接。
第一步:确认JDK、Eclipse、MySQL三者的版本关系
版本不匹配是配置失败的头号原因,尤其MySQL 8.0之后,认证方式变了,老驱动直接歇菜,先自查一下环境:
- JDK:8及以上版本都能用,推荐LTS版本(JDK 8或JDK 11),JDK 17也没问题。
- Eclipse:2020-09之后的版本对JDBC配置没什么特殊要求,随便哪个版本都行。
- MySQL:如果是5.7,用mysql-connector-java 5.1.x或8.0.x都可以;如果是8.0,必须用8.0.x驱动,这点别偷懒。
在命令行输入mysql --version确认数据库版本,然后去MySQL官网的Connector/J下载页选对应版本。选Platform Independent的zip压缩包,解压后只有一个jar文件,省心,下载时注意看驱动包名:
- 0.x版本号对应驱动主类
com.mysql.cj.jdbc.Driver - 1.x版本号对应驱动主类
com.mysql.jdbc.Driver
这个类名后面写代码要用到,先记着。
第二步:把jar包导入eclipse项目的Build Path
这一步是新手翻车重灾区,很多人以为把jar包拖到项目文件夹里就算导入,其实eclipse只认Build Path里登记过的依赖,正确操作路径如下:
- 在eclipse的Package Explorer视图里右键项目名,选 Build Path → Configure Build Path
- 在弹出窗口切到 Libraries 标签页
- 点 Add External JARs,从本地磁盘选中刚下载的
mysql-connector-j-8.x.x.jar - 点Apply and Close,完事后在展开的项目目录里能看到Referenced Libraries下多出这个jar包
如果做的是动态Web项目(后面要部署到Tomcat),光加Build Path还不够。必须额外把jar包复制到WEB-INF/lib目录下,否则部署时Tomcat找不到驱动,照样报ClassNotFoundException,这个坑在eclipse配置mysql时特别常见。
第三步:在代码里配置数据库连接

新建一个Java类,先别急着写业务逻辑,用最标准的JDBC套路把连接跑通:
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/数据库名?useSSL=false&serverTimezone=Asia/Shanghai";
Connection conn = DriverManager.getConnection(url, "root", "你的密码");
System.out.println("连接成功:" + conn);
看到控制台打印连接成功后,恭喜,eclipse配置mysql的整条链路已经打通,如果卡在某个环节,大概率是下面这些情况导致的。
eclipse配置mysql时ClassNotFoundException报错怎么解决
绝大多数这类报错都是驱动类名写错或jar包没被正确加载造成的,按顺序排查效率最高。
驱动类名写错是最大嫌疑
- 用8.0.x驱动写成了
com.mysql.jdbc.Driver,改成com.mysql.cj.jdbc.Driver - 用5.1.x驱动写成了
com.mysql.cj.jdbc.Driver,改回com.mysql.jdbc.Driver - 更粗心的是把
cj写成jc,Driver少个r,这类低级笔误出现频率高到难以想象
jar包没真正进入项目依赖
检查一下classpath文件,打开项目根目录的.classpath文件,看里面有没有一行类似:
<classpathentry kind="lib" path="/本地路径/mysql-connector-j-8.x.jar"/>
没有的话说明Libraries没加上,回到Build Path重新操作,或者试试右键项目 → Maven → Update Project(如果你是用pom.xml引入依赖的话)。
动态Web项目的Tomcat部署路径问题
这是eclipse配置mysql时最容易忽略的环节,本地Java Application跑通了,但一部署到Tomcat就报ClassNotFoundException?查看部署路径:双击eclipse下方的Servers标签页,点开对应Tomcat的配置,选 Overview → Activate this server 附近有个 Publish Module Paths 面板,展开项目,看WEB-INF/lib里有没有那个jar包,没有就手动复制过去,再Clean一下Tomcat的临时缓存。
MySQL 8.x专属的serverTimezone与SSL参数
这个问题在MySQL 8.0时代出现的频率极高,连接8.0数据库时,URL不写serverTimezone参数会抛异常,提示

The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized,这是时区乱码造成的,在URL后追加serverTimezone=Asia/Shanghai即可解决,另外MySQL 8默认开启SSL连接,如果本地开发不想处理证书,加上useSSL=false参数跳过。
行业共识认为,MySQL 8已经被相当比例的开发者踩过这个坑后,官方驱动才对时区做了强制校验,所以上面这个参数组合,建议直接作为固定模板使用。
eclipse内置数据库工具与代码连接的区别
除了写JDBC代码,eclipse其实自带了数据库探索面板,不少人在eclipse配置mysql的时候,其实只是想看个表结构,没必要写代码。
操作路径:Window → Perspective → Open Perspective → Other → Database Development,然后在Data Source Explorer里右键新建连接,选MySQL,填连接地址、账号密码,eclipse就会自动把驱动加进去,注意这里填的驱动类名同样要遵循上面的版本规则。
这个方式和写代码连数据库的核心逻辑一致:驱动加载、URL定义、账号密码,区别只在于eclipse帮你把这些封装成了可视化表单,底层做的事情相同。
从DriverManager到连接池:项目上线前要做的切换
如果开发阶段用DriverManager直连没问题,但准备发布到生产环境前,务必换用数据库连接池,原因不复杂:每获取一次连接就new一个物理连接,并发上来后数据库连接创建开销剧增,响应延迟明显。
推荐用Druid或HikariCP,以Druid为例,在eclipse里的配置路径是:
- 下载druid-1.2.x.jar放进Build Path
- 写配置类读入
druid.properties包含url、driverClassName、用户名、密码、初始连接数和最大活跃连接数 - 通过
DruidDataSourceFactory.createDataSource(properties)获取数据源
连接池配置文件的url与驱动类名规则,和前面直连时的要求完全一致,不存在额外适配成本。
连接失败排查速查表
遇到连不上的情况,按表格顺序检查,多数问题集中在驱动缺失和URL参数错误:

| 报错特征 | 最常见原因 | 解决思路 |
|---|---|---|
| ClassNotFoundException | jar未加载或类名写错 | 重走Build Path,核对driver类名 |
| Communications link failure | 端口不对或服务未启动 | 命令行验证服务,ping一下3306 |
| Access denied for user | 账号密码或权限问题 | 确认MySQL用户表权限,试root |
| Unrecognized time zone | 参数缺时区 | URL加上serverTimezone=Asia/Shanghai |
为什么eclipse配置mysql教程这么多,你还搞不定
说到底,绝大部分报错不是智商问题,是版本信息太隐蔽,官网驱动下载页写着Platform Independent,新人不知道选哪个;安装版MySQL默认编码和时区与本地不一致,新人不知道要改,如果你属于看了很多eclipse配置mysql教程还是没跑通的类型,建议彻底清空重来一遍:卸载驱动jar、删掉代码里的连接类、重新走一遍上面的流程大概率比继续打补丁更快。
Q&A:eclipse配置mysql常见问题
Q1:eclipse连接mysql需要下载什么版本的驱动?
看MySQL数据库版本号,8.0及以上用mysql-connector-j 8.0.x系列,5.7及以下用5.1.x或8.0.x都行,JDK版本也有关联,JDK 8建议用新版驱动,老版本驱动在JDK 8以上跑会有警告信息。
Q2:为什么Build Path里加了jar包还是报ClassNotFoundException?
检查你运行代码的方式,如果是右键Run As Java Application,确认运行配置里的Run Configuration也加载了该jar包,默认会继承项目Build Path,不会漏,如果是在Tomcat上运行,问题出在编译后的部署目录,必须把jar放到WEB-INF/lib下再重新发布。
Q3:URL中的参数写法在MySQL 5.7和8.0之间有区别吗?
主要区别在于driverClassName(8.0是com.mysql.cj.jdbc.Driver)和serverTimezone参数,5.7时代可以不写时区参数,8.0连接时必写,否则直接抛异常,useSSL参数建议都写上false,本地开发环境不涉及加密传输需求,省去证书配置的麻烦。
