Spring应用IDE运行正常,JAR启动报错Failed to determine suitable driver class
问题解决:Spring Boot可执行JAR运行时找不到数据库驱动类
核心原因
你自定义的myFatJar任务未正确处理Spring Boot打包的特殊要求,比如没有合并META-INF/services目录下的驱动注册文件,导致Spring无法识别MySQL驱动类;而IDEA运行时会自动加载所有依赖资源,因此不会出现该问题。
解决方案:使用Spring Boot官方的bootJar任务
Spring Boot Gradle插件内置了专门构建可执行Fat JAR的bootJar任务,无需手动编写打包逻辑:
删除自定义打包任务
移除build.gradle中你定义的myFatJar相关代码。自定义Jar名称(可选)
如果需要指定Jar文件名,添加以下配置:bootJar { archiveBaseName.set("gusli-bot-jar") archiveVersion.set(version) }构建并运行
- 执行构建命令:
./gradlew bootJar - 生成的Jar文件位于
build/libs目录下,运行命令:java -jar build/libs/gusli-bot-jar-0.8.0.jar
- 执行构建命令:
额外说明
- 你的
application.properties配置无误,spring.datasource.driver-class-name指定了正确的MySQL 8.x驱动类com.mysql.cj.jdbc.Driver,无需修改。 - 之前尝试的排除
DataSourceAutoConfiguration会导致应用无法初始化数据源,不符合业务需求,无需采用。 runtimeOnly 'com.mysql:mysql-connector-j'依赖声明正确,bootJar任务会自动将其包含到最终的Fat JAR中。
内容的提问来源于stack exchange,提问作者Сергей Штукатуров
相关产品推荐
相关产品推荐

