Vert.x JDBC客户端运行报错Could not load the required implementation问题咨询
报错根因
从异常堆栈的Caused by字段可以直接定位,错误根源是运行时类路径缺少Agroal连接池的核心实现类io.agroal.pool.DataSource。
Vert.x JDBC客户端默认使用Agroal作为连接池实现,该组件分为接口包agroal-api和实现包agroal-pool两部分。多数情况下开发者只会显式引入Vert.x JDBC客户端的依赖,该依赖只会传递引入agroal-api接口包,不会自动带入实现包,因此运行时加载实现类就会触发类不存在的异常。
解决方案
方案一(推荐):补充引入对应版本的agroal-pool依赖
- Maven项目在pom.xml中添加以下依赖:
<dependency> <groupId>io.agroal</groupId> <artifactId>agroal-pool</artifactId> <version>和当前项目中agroal-api版本一致即可</version> </dependency>- Gradle项目在build.gradle的依赖块中添加:
implementation 'io.agroal:agroal-pool:对应版本号'注意:agroal-pool的版本必须和项目中已有的agroal-api版本完全一致,避免出现接口实现不兼容问题,你可以查看项目的依赖树获取当前agroal-api的具体版本号
方案二:更换其他连接池实现
如果你不想使用Agroal连接池,可以切换为HikariCP、C3P0等其他连接池,引入对应连接池的依赖后,在构造JDBCPool时显式指定对应的数据源Provider即可。
添加完依赖后需要清空项目原有编译缓存,重新构建项目确保依赖被正确加载到类路径中。
内容的提问来源于stack exchange,提问作者waldelb
相关产品推荐
相关产品推荐

