You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gradle Shadow Jar打包多JDBC驱动遇适配问题求助

解决Gradle构建Fat Jar时多JDBC驱动兼容问题

问题根源

打包Fat Jar时,多个JDBC驱动包中的META-INF/services/java.sql.Driver文件会被默认覆盖,仅保留首个被打包的驱动条目,导致JDBC 4的自动驱动注册机制失效,出现java.sql.SQLException: No suitable driver错误。

解决方案:配置Shadow插件合并服务文件

修改你的build.gradle,添加Shadow插件的合并策略,将所有JDBC驱动的服务条目合并到同一个文件中:

plugins {
    id("application")
    id("com.github.johnrengelman.shadow") version "7.1.0"
}

dependencies {
    implementation group: 'net.sourceforge.jtds', name: 'jtds', version: '1.3.1'
    implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.26'
}

// 新增Shadow插件配置,合并JDBC驱动服务文件
shadowJar {
    mergeServiceFiles()
}

配置说明

mergeServiceFiles()是Shadow插件提供的内置策略,会自动合并所有META-INF/services目录下的同名文件,确保java.sql.Driver文件中包含所有JDBC驱动的实现类全限定名,比如:

net.sourceforge.jtds.jdbc.Driver
com.mysql.cj.jdbc.Driver

验证方法

执行gradle shadowJar打包后,解压生成的Fat Jar,检查META-INF/services/java.sql.Driver文件,确认包含所有依赖的JDBC驱动类条目即可。此时无需手动调用Class.forName(),JDBC 4的自动注册机制会根据连接字符串正确识别并加载对应的驱动。

内容的提问来源于stack exchange,提问作者greatFritz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 16:26:26