解决无法引入 mysql-connector-j 的问题

开发环境

  • Windows 10
  • Oracle JDK 1.8
  • Maven 3.8.8
  • IntelliJ IDEA 2022.2.2

问题

在使用 Spring initializr 创建 Spring Boot 项目时,无法引入 mysql-connector-j 这个依赖,报错信息:

com.mysql:mysql-connector-j:jar:unknown was not found in https://maven.aliyun.com/repository/public during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of aliyunmaven has elapsed or updates are forced

pom.xml 文件

// 父依赖
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.14</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.32</version>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3.1</version>
    </dependency>
</dependencies>

原因

我使用的 Spring Boot 版本为 2.5.14,该版本使用的 mysql-connector-j 版本为 8.0.29,同时我的依赖是从阿里云的镜像库而不是 Maven 的中央仓库上下载的。我尝试手动引入这个版本。

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.29</version>
    <scope>runtime</scope>
</dependency>

结果报了同样的错误。也就是说,阿里云镜像仓库可能没有这个版本的 mysql-connector-j

解决方法

手动引入高于 8.0.29 版本的 mysql-connector-j 即可解决。

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.32</version>
    <scope>runtime</scope>
</dependency>
### MySQL Connector/J 替代 mysql-connector-java 在较新的项目中,`mysql-connector-java` 已经被 `mysql-connector-j` 取代。这种转变主要体现在 Maven 依赖项的变化上[^2]。 对于旧版的 Spring Boot 或其他 Java 应用程序来说,通常会使用如下形式来引入 MySQL 驱动: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> ``` 但是,在更新后的版本里,为了保持与最新标准的一致性以及解决潜在的安全性和兼容性问题,官方建议采用新的坐标定义方式: ```xml <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> </dependency> ``` 除了命名空间上的调整外,两者之间并没有本质的功能差异;都是用于实现Java应用程序连接到MySQL数据库的服务端接口。不过需要注意的是,由于维护团队的不同,可能会存在一些细微的行为差别或是性能优化方面的改进。 #### 关键特性比较 | 特性 | mysql-connector-java | mysql-connector-j | |--------------------|-------------------------------------|------------------------------------| | **Maven Group ID** | `mysql` | `com.mysql` | | **Artifact ID** | `mysql-connector-java` | `mysql-connector-j` | | **支持协议** | 支持多种通信协议 | 继续提供对现有协议的支持 | 尽管名称有所更改,但从功能角度来看,这两个驱动程序都旨在为开发者提供稳定可靠的JDBC API访问途径,以便能够轻松操作关系型数据库管理系统中的数据资源。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值