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

xqnpmsa8  于 2022-09-18  发布在  Java
关注(0)|答案(15)|浏览(184)
spring.freemarker.cache:false

spring.datasource.url=jdbc:mysql://localhost/mydb
spring.datasource.username=user
spring.datasource.password=pass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

即使定义了驱动程序类名称,我仍收到此错误

Java.lang.IlLegalStateException:无法加载驱动程序类:com.mysql.jdbc.Driver at org.springframework.util.Assert.state(Assert.java:392)~[spring-core-4.2.1.RELEASE.jar:4.2.1.RELEASE]at org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.getDriverClassName(DataSourceProperties.java:153)~[spring-boot-autoconfigure-1.3.0.M5.jar:1.3.0.M5]at org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource(DataSourceAutoConfiguration.Java:119)~[spring-boot-autoconfigure-1.3.0.M5.jar:1.3.0.M5]at sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)~[NA:1.8.0_60]at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)~[NA:1.8.0_60]在......

而且它还在继续

lf5gs5x2

lf5gs5x21#

如果您使用的是Maven,请将此代码添加到您的pom.xml中:

(推荐)用于MySQL 5.6, 5.7, 8.xJava >= 8

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

(传统)用于MySQL <= 5.5Java <= 7JDBC < 4.2

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

More details on Connector/J versions

vuv7lop3

vuv7lop32#

可能是您正在使用不推荐使用的驱动程序类名。我通过更新应用程序.properties文件中的属性解决了这个问题。

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

iyzzxitl

iyzzxitl3#

只需确认以下几件事。

1.如果您在代理下,请确保使用VPN连接到内部服务器,如果您正在访问DEV/STG服务器
1.确保在正确的位置中添加以下依赖项,如下所示

<dependencies> <--- inside this section <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> </dependencies>

而不在

`<build> <--- Not this section
<dependencies>
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
</dependency>

`3.而且您不需要使用以下行

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

Spring.datource.url=jdbc:mySQL://xxxxx`会自动知道要获取哪个驱动程序。

ct2axkht

ct2axkht4#

如果您使用的是IDEA和Maven,您可能会忘记重新加载所有Maven项目,这会导致依赖项没有MySQL连接器JAR。这就是为什么当您运行应用程序时,会出现错误提醒“com.mysql.cj.jdbc.Driver”的原因。

rt4zxlrg

rt4zxlrg5#

问题的症结在于您缺少MySQL驱动程序依赖项。

正如其他答案所概述的,其中一种方法是在构建工具的配置中指定它。但是,如果您不想这样做,并且正在使用IntelliJ IDEA(尽管我非常确定Eclipse也有类似的东西),您也可以通过它添加依赖项。步骤:

1.从maven repository下载所需JAR
1.在IntelliJ Idea中打开项目
1.文件->项目结构->库
1.单击新建项目库(左侧绿色加号),或按Alt+Insert组合键
1.选择Java
1.选择您的jar
1.按OK

应该如下所示:

现在,您应该能够使用刚刚添加的依赖项了。

使用IntelliJ IDEA 2017.3.4进行测试。

4xy9mtcn

4xy9mtcn6#

我将分享此错误的更多原因:

  • 我已经多次看到这个错误使用IntelliJ IDEA并运行了一些集成测试。测试失败,并显示消息:Caused by: java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver。重新生成项目(生成>重新生成项目)后,错误消失。
  • 该错误的另一个原因是JAR损坏。一所大学收到此错误(也试图运行集成测试),在删除.m2目录上的一些相关JAR后,错误消失了。
pgccezyw

pgccezyw7#

Build.gradle

runtimeOnly 'mysql:mysql-connector-java'

Application.yml

spring: 
    application:
        name: apevent
        version: 1.0
    datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/applicaiton
vnzz0bqm

vnzz0bqm8#

可能有人仍然需要一个答案(就像我以前一样)我通过添加以下依赖项解决了这个问题

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
</dependency>
iq0todco

iq0todco9#

我现在遇到了同样的问题,并在提供了所需的依赖后解决了它。

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.15</version>
    </dependency>
jucafojl

jucafojl10#

我知道这可能有点晚了,但也许未来的任何人都会发现这个答案是有帮助的。这个问题的产生可能有三个原因

  • 配置错误maven或Gradle
    Applation.Properties文件中的Spring配置不正确
  • 应用程序.properties文件中的类名错误。
  • 如果您使用的是maven,请执行故障排除。不包含版本名称。这在很大程度上是产生问题的秘诀,特别是在大型应用程序中。使用maven自动完成功能可以为您节省一点时间。
  • 正确配置数据源。关于这个问题,有很多答案。确保它是正确的。有时会有一个cj丢失或包含在不应该出现的位置。反复试验可能会帮助您发现问题

如果以上两个选项都不起作用。完全删除spring.datasource.driver-class-name=com.mysql.jdbc.driver。我不知道它是否神奇,但最后一个对我来说很管用。

书呆子们加油!

xiozqbni

xiozqbni11#

这种类型的错误基本上是针对SQL版本生成的。更改您的/或在您的macen依赖项中添加SQL版本

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.18</version>
        </dependency
xkrw2x1b

xkrw2x1b12#

添加以下依赖项解决了我的问题

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
2jcobegt

2jcobegt13#

我的问题只需刷新项目即可解决,也许在您运行应用程序时依赖项尚未加载

waxmsbnn

waxmsbnn14#

我也有同样的问题。这是因为我忘记在我的pom文件中声明MySQL连接器依赖项。我添加了依赖,然后砰!错误消失了。

o2rvlv0m

o2rvlv0m15#

适用于使用Gradle 8.0及更高版本的用户。我不得不用

implementation 'mysql:mysql-connector-java:8.0.26'

而不是

implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.26'

我的应用程序.yml如下所示:

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/<Your DB name>?useSSL=false

记住重新加载您的Gradle文件

相关问题