报错 com.alibaba.druid.pool.DruidDataSource error严重:java.sql.SQLException: ${jdbc.driver}

博客介绍了一个问题的解决办法,通过在pom.xml中提高Spring核心依赖版本成功解决问题。可能原因是修改前mysql驱动版本高于Spring核心,修改后Spring核心版本高于mysql驱动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

E:\Java\jdk1.8.0_172\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2022.3.3\lib\idea_rt.jar=53003:D:\IntelliJ IDEA 2022.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\Java\jdk1.8.0_172\jre\lib\charsets.jar;E:\Java\jdk1.8.0_172\jre\lib\deploy.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\access-bridge-64.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\cldrdata.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\dnsns.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\jaccess.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\jfxrt.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\localedata.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\nashorn.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\sunec.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\sunjce_provider.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\sunmscapi.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\sunpkcs11.jar;E:\Java\jdk1.8.0_172\jre\lib\ext\zipfs.jar;E:\Java\jdk1.8.0_172\jre\lib\javaws.jar;E:\Java\jdk1.8.0_172\jre\lib\jce.jar;E:\Java\jdk1.8.0_172\jre\lib\jfr.jar;E:\Java\jdk1.8.0_172\jre\lib\jfxswt.jar;E:\Java\jdk1.8.0_172\jre\lib\jsse.jar;E:\Java\jdk1.8.0_172\jre\lib\management-agent.jar;E:\Java\jdk1.8.0_172\jre\lib\plugin.jar;E:\Java\jdk1.8.0_172\jre\lib\resources.jar;E:\Java\jdk1.8.0_172\jre\lib\rt.jar;E:\aCode\idea代码\Spring_test\target\classes;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-context\4.2.4.RELEASE\spring-context-4.2.4.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-aop\4.2.4.RELEASE\spring-aop-4.2.4.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-beans\4.2.4.RELEASE\spring-beans-4.2.4.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-core\4.2.4.RELEASE\spring-core-4.2.4.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-expression\4.2.4.RELEASE\spring-expression-4.2.4.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\com\alibaba\druid\1.0.9\druid-1.0.9.jar;E:\Java\jdk1.8.0_172\lib\jconsole.jar;E:\Java\jdk1.8.0_172\lib\tools.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\mysql\mysql-connector-java\5.1.41\mysql-connector-java-5.1.41.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\mybatis\mybatis\3.2.8\mybatis-3.2.8.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\mybatis\mybatis-spring\1.2.2\mybatis-spring-1.2.2.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-jdbc\4.2.6.RELEASE\spring-jdbc-4.2.6.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\org\springframework\spring-tx\4.2.6.RELEASE\spring-tx-4.2.6.RELEASE.jar;D:\software\maven\apache-maven-3.9.2\mvn_resp\javax\servlet\javax.servlet-api\3.1.0\javax.servlet-api-3.1.0.jar com.peng.test.ApplictionContext
六月 03, 2023 12:54:11 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@7daf6ecc: startup date [Sat Jun 03 12:54:11 CST 2023]; root of context hierarchy
com.peng.service.impl.UserServiceImpl@765d7657
org.apache.ibatis.binding.MapperProxy@74235045
六月 03, 2023 12:54:12 下午 com.alibaba.druid.pool.DruidDataSource error
严重: dataSource init error
java.sql.SQLException: ${jdbc.driver}
	at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:520)
	at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:583)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
	at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81)
	at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
	at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:279)
	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:72)
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:59)
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
	at com.sun.proxy.$Proxy18.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
	at com.sun.proxy.$Proxy19.SelectAll(Unknown Source)
	at com.peng.service.impl.UserServiceImpl.show(UserServiceImpl.java:57)
	at com.peng.test.ApplictionContext.main(ApplictionContext.java:18)
Caused by: java.lang.ClassNotFoundException: ${jdbc.driver}
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:518)
	... 30 more

六月 03, 2023 12:54:12 下午 com.alibaba.druid.pool.DruidDataSource info
信息: {dataSource-1} inited
Exception in thread "main" org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: ${jdbc.driver}
### The error may exist in com/peng/mapper/UserMapper.xml
### The error may involve com.peng.mapper.UserMapper.SelectAll
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: ${jdbc.driver}
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:75)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:371)
	at com.sun.proxy.$Proxy18.selectList(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
	at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
	at com.sun.proxy.$Proxy19.SelectAll(Unknown Source)
	at com.peng.service.impl.UserServiceImpl.show(UserServiceImpl.java:57)
	at com.peng.test.ApplictionContext.main(ApplictionContext.java:18)
Caused by: org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: ${jdbc.driver}
### The error may exist in com/peng/mapper/UserMapper.xml
### The error may involve com.peng.mapper.UserMapper.SelectAll
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: ${jdbc.driver}
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:26)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:111)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
	... 8 more
Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: ${jdbc.driver}
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
	at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:81)
	at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)
	at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:279)
	at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:72)
	at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:59)
	at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
	at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
	at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
	... 14 more
Caused by: java.sql.SQLException: ${jdbc.driver}
	at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:520)
	at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:583)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:915)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:911)
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:98)
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
	... 24 more
Caused by: java.lang.ClassNotFoundException: ${jdbc.driver}
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.alibaba.druid.util.JdbcUtils.createDriver(JdbcUtils.java:518)
	... 30 more

进程已结束,退出代码1

解决办法

pom.xml中提高  Spring核心依赖版本

修改前:

        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>

修改后

        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.7</version>
        </dependency>

成功解决

可能原因

修改之前是这样的 mysql驱动版本高于spring核心

        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.2.4.RELEASE</version>
        </dependency>

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

 修改后 spring核心版本高于mysql驱动

        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.7</version>
        </dependency>

        <!--mybatis驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>

 

<think>好的,用户遇到了Java应用程序中初始化MySQL数据源时的错误,具体是java.sql.SQLException: com.mysql.cj.jdbc.Driver。我需要根据提供的引用信息来整理解决方案。首先,这个错误通常和驱动类配置或依赖版本不匹配有关。 根据引用1到4,常见的解决步骤包括检查驱动类名是否正确,更新MySQL连接器版本,配置Maven依赖,以及检查JDBC URL格式。特别是,用户可能使用了旧版本的MySQL连接器,而驱动类名在5.x和8.x版本是不同的。例如,旧版本使用com.mysql.jdbc.Driver,而8.x以上版本需要用com.mysql.cj.jdbc.Driver,但这里错误信息已经显示使用了正确的cj驱动,所以可能问题在于依赖版本或者URL参数。 另外,引用2和3提到需要将连接器版本升级到8.0.x,比如8.0.28,并在pom.xml中正确配置依赖。同时,引用4指出版本不兼容的情况,例如使用8.0.34的MySQL但连接器版本过低。因此,用户需要确保连接器版本与MySQL服务器版本匹配。 还需要检查JDBC URL中的时区设置,如添加serverTimezone=UTC,这在引用3的配置示例中有体现。此外,Maven依赖的刷新和项目的清理重启也是关键步骤,可能解决缓存导致的旧驱动问题。 总结步骤应该是:验证驱动类名,更新依赖版本,检查URL格式,清理项目,并确保版本一致性。同时,用户可能需要检查是否有多个驱动冲突,比如其他依赖引入了旧版本连接器,导致冲突。这种情况下,Maven的依赖排除或明确指定版本可以解决问题。</think>### 解决方案:DataSource初始化错误`java.sql.SQLException: com.mysql.cj.jdbc.Driver` #### 1. 检查驱动类名和JDBC URL配置 - **驱动类名**:MySQL Connector/J **8.x及以上版本**的驱动类名为`com.mysql.cj.jdbc.Driver`,而**5.x版本**为`com.mysql.jdbc.Driver`。如果配置错误会导致初始化失败。 - **JDBC URL格式**: ```java // 8.x版本需添加时区参数 jdbc:mysql://localhost:3306/db_name?useSSL=false&serverTimezone=UTC ``` 若未指定时区(如`serverTimezone=UTC`),可能导致连接异常[^3]。 #### 2. 更新MySQL Connector依赖版本 在`pom.xml`中确保使用与MySQL服务端版本匹配的驱动: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!-- 8.0.x版本对应MySQL 8.x --> <version>8.0.28</version> </dependency> ``` 若驱动版本(如5.1.17)与MySQL服务端(如8.0.34)不兼容,会直接报错[^4]。 #### 3. 清理Maven依赖并重新编译 - 执行`mvn clean install`清除旧依赖 - 检查IDE(如IntelliJ/Eclipse)的Maven依赖树,确保无版本冲突: ```bash mvn dependency:tree ``` #### 4. 验证数据源配置 - **Druid配置示例**(Spring Boot): ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource ``` 若使用Druid连接池,需确认其版本与MySQL驱动兼容(如Druid 1.1.12 + MySQL 8.0.x)[^4]。 #### 5. 检查Java运行环境 - 确认JRE版本与MySQL Connector兼容(如Java 8+支持MySQL 8.x驱动) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值