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

4
我的Spring Boot项目尝试使用驱动程序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。

enter image description here

Spring Boot 版本 2.6.2

enter image description here

当我在Intellij中运行项目时,出现错误。
由于:org.springframework.beans.BeanInstantiationException: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver,导致错误。
我参考了关于无法加载驱动程序类:com.mysql.jdbc.Driver(而不是com.mysql.cj.jdbc.Driver)的帖子,但我不能应用于我的项目,因为当使用com.mysql.cj.jdbc.Driver而不是com.mysql.jdbc.Driver时,我的项目会出错。
我还参考了这篇文章无法加载驱动程序类:com.mysql.cj.jdbc.Driver。但是我找不到正确的答案(答案被标记为已纠正)来解决这个错误。
如何修复这个错误?

检查您正在使用的JDK版本。 - Ravindra Gullapalli
5个回答

5

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

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

enter image description here


0
你有检查过你用的是哪个版本的MySQL连接器吗?
由于你在pom.xml中没有指定版本,有可能它拉取了版本5,现在为此 complaining about that .cj which is required for version 8。
这可能就是为什么没有 .cj (com.mysql.jdbc.Driver) 也能工作,因为它拉取了版本5。 在pom.xml中手动添加版本并保持 .cj 不变。
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

编辑:

这个依赖关系来自上面,如果你在Maven中央访问它

https://mvnrepository.com/artifact/mysql/mysql-connector-java

现在已迁移至

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

编辑:

在此之后,请确保您拉取了所需的依赖项。 但请确保在“mvn clean install”之后检查您的项目,确保只有版本8。

至于您分享的“mysql版本”的图片,那没有任何意义,异常与mysql-connector jar有关,与workbench无关,您仍然可以使用workbench版本5,并使用mysql-connector jar版本8,这不会有任何区别。

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

mysql-connector 8 jar = 需要 .cj

mysql-connector 5 jar = 不需要 .cj

您唯一需要做的就是在pom.xml中定义mysql-connector-java的版本。


0

-1

修复将jdbc驱动程序类设置为以下行:我认为这并不重要,但driver-class-name更常见。并检查您的构建文件是否是最新的。最好尝试使用pom.xml重新构建。

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


她已经说过:“在使用com.mysql.cj.jdbc.Driver时,我的项目出现错误,但不是com.mysql.jdbc.Driver。”我认为将键重命名为driver-class-name并不能有所帮助。 - zawarudo
com.mysql.jdbc.Driver -> com.mysql.cj.jdbc.Driver 是与mysql版本相关的,我没有提到过。我确实说过我不认为这很重要,但是尝试一下是否可以解决问题。而且我确实说过再次构建它,因为通常情况下这可以解决问题。正如您可以从OP的答案中看到的那样,这是一个简单的重新构建即可解决的问题。 - jeff pentagon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接