无法加载驱动程序 class:com.mysql.cj.jdbc.Driver

Cannot load driver class: com.mysql.cj.jdbc.Driver

我的 Spring 引导项目尝试使用驱动程序 mysql-connector-java 连接到 MYSQL 数据库。 我导入了最新的 mysql 驱动程序和 spring-boot-starter-data-jpa

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

我已经在 application.properties 文件中配置了数据库连接

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example
spring.datasource.username=somethingfunny
spring.datasource.password=somethingfunny
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
#spring.jpa.show-sql: true

MYSQL版本为8.0.26

Spring 引导版本 2.6.2

使用 Intellij 运行 项目时出现错误

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.14.jar:5.3.14] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.14.jar:5.3.14] ... 35 common frames omitted Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core-5.3.14.jar:5.3.14] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.determineDriverClassName(DataSourceProperties.java:241) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:193) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.createDataSource(DataSourceConfiguration.java:48) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] at org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:90) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.14.jar:5.3.14] ... 36 common frames omitted

我已经参考了关于 Cannot load driver class: com.mysql.jdbc.Driver 的 post(不是 com.mysql.cj.jdbc.Driver),我无法申请我的项目,因为我的项目在使用 com.mysql.cj.jdbc.Driver 而不是 com.mysql.jdbc.Driver.

我也参考了这个 post Cannot load driver class: com.mysql.cj.jdbc.Driver。但是我找不到这个错误的正确答案(答案被标记为更正)。

如何解决这个错误?

修复设置 jdbc 驱动程序 class 的行,如下所示:我认为这无关紧要,但驱动程序-class-名称更常见。并检查您的构建文件是否是最新的。不妨尝试使用 pom.xml

重建

spring.datasource.driver-class-姓名=com.mysql.cj.jdbc.Driver

您检查过您的 MySQL 连接器是哪个版本吗?

由于您没有在 pom.xml 中指定版本,它有可能拉取了版本 5,现在它抱怨版本 8 需要的 .cj。

这可能是它在没有 .cj ( com.mysql.jdbc.Driver ) 的情况下工作的原因,因为它提取了版本 5。 在您的 pom.xml 中手动添加版本并保持 .cj 不变。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

之后确保你拉你的依赖。 但是,如果您在“mvn clean install”之后只有版本 8,请确保签入您的项目。

根据您分享的图片“mysql版本”,这没有任何意义,例外是关于 mysql-connector jar,它与 workbench 无关,您仍然可以使用 workbench 版本 5,并使用 mysql-connector jar 版本 8,这没有区别。

在 mysql workbench(5 或 8)的任何版本中:

mysql-连接器 8 jar = 需要 .cj

mysql-connector 5 jar = 不需要.cj

您唯一需要做的就是在 pom.xml

中定义 mysql-connector-java 的版本

1) 在pom.xml

中使用这个依赖
<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>

2) 在您的 application.properties 文件中使用此 属性

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

我已经解决了这个问题。在 Intellij 中右键单击项目,选择 maven,选择重新加载项目。现在 Intellij 将 mysql 驱动程序添加到项目