【问题标题】:Cannot load driver class: com.mysql.jdbc.Driver Spring无法加载驱动程序类:com.mysql.jdbc.Driver Spring
【发布时间】:2016-01-12 11:05:31
【问题描述】:
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 在 org.springframework.util.Assert.state(Assert.java:392) ~[spring-core-4.2.1.RELEASE.jar:4.2.1.RELEASE] 在 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.getDriverClassName(DataSourceProperties.java:153) ~[spring-boot-autoconfigure-1.3.0.M5.jar:1.3.0.M5] 在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource(DataSourceAutoConfiguration.java:119) ~[spring-boot-autoconfigure-1.3.0.M5.jar:1.3.0.M5] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) ~[na:1.8.0_60] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_60] 在......

然后继续

【问题讨论】:

    标签: spring


    【解决方案1】:

    如果您使用的是 Maven,请将其添加到您的 pom.xml

    (推荐)供MySQL 5.6, 5.7, 8.xJava >= 8使用;

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

    (旧版)供MySQL &lt;= 5.5Java &lt;= 7JDBC &lt; 4.2 使用;

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

    More details on Connector/J versions

    【讨论】:

    • mysqlmysql-connector-java5.0.8 我的已经有这个了太
    【解决方案2】:

    可能是您使用了已弃用的驱动程序类名称。我通过更新 application.properties 文件中的属性解决了这个问题。

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

    【讨论】:

    【解决方案3】:

    只需确认以下几点即可。

    1. 如果您使用代理,请确保使用 VPN 连接到内部服务器,如果您正在访问 DEV/STG 服务器

    2. 确保在正确的位置添加以下依赖项,像这样

      <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.datasource.url=jdbc:mysql://xxxxx` 自动知道要获取哪个驱动程序。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          【解决方案6】:

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

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

          1. maven repository下载所需的jar
          2. 在 Intellij IDEA 中打开您的项目
          3. 文件 -> 项目结构 -> 库
          4. 点击新建项目库(左侧的绿色加号),或按 Alt + Insert 键
          5. 选择 Java
          6. 选择你的罐子
          7. 按确定

          应该是这样的:

          现在您应该可以使用刚刚添加的依赖项了。

          使用 IntelliJ IDEA 2017.3.4 测试。

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              【解决方案8】:

              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
              

              【讨论】:

              • 显示某些命令已被弃用,因此 Gradle 8.0 无法正常运行。所以这个答案只适用于 Gradle 8.0 之前
              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

                这种类型的错误基本上是针对sql版本产生的。改变你的 / 或者在你的 macen 依赖中添加 sql 版本

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

                【讨论】:

                【解决方案11】:

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

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

                【讨论】:

                  【解决方案12】:

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

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

                  而不是

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

                  我的 application.yml 看起来像:

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

                  记得重新加载你的 gradle 文件

                  【讨论】:

                    猜你喜欢
                    • 2018-11-13
                    • 1970-01-01
                    • 2016-08-18
                    • 2012-04-23
                    • 2015-03-01
                    • 1970-01-01
                    • 2012-08-24
                    • 2020-09-12
                    相关资源
                    最近更新 更多