数据库连接错误.....无法加载驱动程序类...数据源异常

Posted

技术标签:

【中文标题】数据库连接错误.....无法加载驱动程序类...数据源异常【英文标题】:Database connection Error ..... cannot load driver class ... Datasource exception 【发布时间】:2019-07-24 21:59:39 【问题描述】:

应用程序属性

spring.jpa.hibernate.ddl-auto=update
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver    
spring.datasource.url=jdbc:mysql://localhost:3306/RESERVATION?useSSL=false
spring.datasource.data-username=sam
spring.datasource.data-password=admin123 spring.jpa.show-sql=true
spring.mvc.view.prefix=/WEB-INF/jsps/ spring.mvc.view.suffix=.jsp
server.servlet.context-path=/flightreservation2     
spring.jpa.database=MYSQL spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.test-on-borrow=true

应用程序主

package com.sam.flightreservation;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication public class Flightreservation2Application 

    public static void main(String[] args) 
        SpringApplication.run(Flightreservation2Application.class, args);
    

错误

启动 ApplicationContext 时出错。显示条件报告 在启用“调试”的情况下重新运行您的应用程序。 2019-03-03 17:42:47.183 错误 10344 --- [restartedMain] os.boot.SpringApplication : 应用程序运行失败

org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“inMemoryDatabaseShutdownExecutor”的 bean 时出错 在类路径资源中定义 [org/springframework/boot/devtools/autoconfigure/DevToolsDataSourceAutoConfiguration.class]: 通过方法表达的不满足的依赖关系 'inMemoryDatabaseShutdownExecutor' 参数 0;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“dataSource”的bean [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [com.zaxxer.hikari.HikariDataSource]:工厂方法 'dataSource' 抛出异常;嵌套异常是 java.lang.IllegalStateException:无法加载驱动程序类: com.mysql.cj.jdbc.Driver 在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:509) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1305) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1144) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:307) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142) ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE] 在 org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:316) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) [spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE] 在 com.sam.flightreservation.Flightreservation2Application.main(Flightreservation2Application.java:10) [classes/:na] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)~[na:1.8.0_161] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_161] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_161] 在 java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_161] 在 org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.1.3.RELEASE.jar:2.1.3.RELEASE]

我几乎尝试了每个网站/YouTube,但问题仍然存在。

【问题讨论】:

尝试删除属性spring.datasource.driver-class-name 你在项目的依赖中添加了 MySQL Connector/J 驱动,确定是 8.0.x 版本吗? 如果我删除属性 spring.datasource.driver-class-name 那么它的显示错误 Access denied for user using password -no BTW 谢谢@user7294900 如果我添加带有版本的 MYSQL,它的显示错误......所以我添加了没有版本但仍然无法工作的 Java 连接器依赖项....... 感谢@Mark Rotteveel 的建议跨度> 【参考方案1】:

spring.datasource.driverClassName: com.mysql.jdbc.Driver 将在pom.xml 中具有以下依赖关系,为您工作

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

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

【讨论】:

【参考方案2】:

不要将driver-class-name 与 MySQL 一起使用:

已知 MySQL 数据源在网络超时支持方面存在问题。请改用 jdbcUrl 配置。

同时添加具有有效值的数据源的用户和密码属性

【讨论】:

如果你指定驱动类名,那么你没有使用 MySQL 数据源,你使用的是普通驱动。

以上是关于数据库连接错误.....无法加载驱动程序类...数据源异常的主要内容,如果未能解决你的问题,请参考以下文章

Java做数据库连接池的时候加载oracle的JDBC驱动时总是提示找不到驱动类

java.Sql.SQLException,无法加载类 net.ucanaccess.jdbc.UcanaccessDriver

无法获得 JDBC 连接;嵌套异常是 java.sql.SQLException:无法加载 JDBC 驱动程序类 'org.hsql.jdbcDriver'

无法加载文件或程序集“Oracle.DataAccess 错误

连接异常:CannotGetJdbcConnectionException:无法加载 JDBC 驱动程序类 ["com.microsoft.sqlserver.jdbc.SQLServerD

React 应用程序错误:无法构造“WebSocket”:可能无法从通过 HTTPS 加载的页面启动不安全的 WebSocket 连接