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

Gradle 6.4.1中排除drill-jdbc-all的com.jayway.jsonpath包仍遇依赖冲突求助

解决Gradle中drill-jdbc-all与spring-boot-starter-data-jpa的json-path依赖冲突问题

我之前也碰到过类似的依赖坑,结合你的情况,咱们一步步来排查和解决:

第一步:先定位冲突的真实根源

先执行Gradle命令拉取完整依赖树,确认com.jayway.jsonpath的所有引入路径:

./gradlew dependencies

重点查看compileClasspath(或你项目使用的目标配置)下的com.jayway.jsonpath:json-path条目,确认除了drill-jdbc-all外,是否还有其他依赖(比如Spring Boot相关组件)引入了不同版本,同时检查你对drill-jdbc-all的排除是否真的生效。

第二步:修正依赖排除配置

你之前的排除配置可以合并成更精准的写法,同时建议替换Gradle 6.x已废弃的compile为官方推荐的implementation:

implementation ('org.apache.drill.exec:drill-jdbc-all:1.18.0') {
    exclude group: 'com.jayway.jsonpath', module: 'json-path'
}
implementation group: 'com.jayway.jsonpath', name: 'json-path', version: '2.4.0'

第三步:强制全局统一版本

如果排除后仍有冲突,大概率是其他依赖悄悄引入了旧版本,这时候可以用Gradle的版本强制策略,让整个项目只使用你指定的2.4.0版本:

configurations.all {
    resolutionStrategy {
        force 'com.jayway.jsonpath:json-path:2.4.0'
    }
}

这个配置会让Gradle忽略所有其他版本的json-path,从根源上消除版本冲突。

特殊情况处理:drill-jdbc-all是Fat Jar

如果上面的步骤都没用,那很可能是drill-jdbc-all-1.18.0.jar本身是个Fat Jar——它已经把com.jayway.jsonpath的类直接打包到内部了,这种情况下排除依赖是无效的(因为类不在传递依赖链里,而是直接在jar包内)。

这时候可以尝试两个方案:

  • 升级Drill JDBC版本:比如升级到1.19.0及以上,看官方是否修复了这个打包问题;
  • 自定义重打包drill-jdbc-all:用Gradle的Shadow插件重新打包该Jar,移除冲突的com.jayway.jsonpath相关类(这个操作需要一定Gradle经验,适合进阶场景)。

最后执行./gradlew clean build清理缓存后重新构建,应该就能解决这个冲突了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:52:31