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

Gradle已下载传递依赖但仍报编译错误的问题咨询

Gradle依赖传递失效?看这篇解决你的问题

嘿,你遇到的这个问题其实不是Gradle的默认行为导致的——正常情况下Gradle是会自动传递依赖的,问题大概率出在你发布A.jar到仓库的时候,没把它的依赖信息(也就是pom.xml)正确传上去。

我给你拆解下原因和解决步骤:

为啥会找不到JSONArray?

当你把A.jar发布到仓库时,除了Jar文件本身,还得同步上传对应的pom.xml,这个文件里记录了A.jar依赖的所有库(比如你提到的org.json)。Gradle在拉取A.jar的时候,会自动读取这个pom.xml,把里面的依赖也引入到项目B中。

如果你的A.jar发布时没带pom.xml,或者pom.xml里的org.json依赖配置不对,Gradle根本不知道A.jar需要这个库,自然不会自动帮你引入,项目B编译时就会报错找不到JSONArray。

该怎么解决?

1. 先检查仓库里A.jar的pom.xml

登录你的仓库(不管是Nexus、Artifactory还是本地仓库),找到A.jar对应的pom.xml文件,确认里面确实有这段依赖配置:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180130</version>
  <scope>compile</scope>
</dependency>

要是pom.xml不存在或者这段配置没了,你得重新发布A.jar,确保发布过程中正确生成并上传pom.xml(用Maven或Gradle的发布插件都会自动处理这个,除非你手动跳过了)。

2. 检查项目B的Gradle配置

先确认你在项目B里的依赖声明是对的——应该写artifactId,不是带.jar后缀的文件名:

implementation 'my.test:A:你的版本号'

然后执行gradle dependencies命令,查看项目B的依赖树,看看org.json有没有被列出来。如果没看到,可能是Gradle缓存了旧的信息,试试执行gradle clean build --refresh-dependencies刷新缓存再看。

3. 临时救急(不推荐长期用)

要是暂时没法重新发布A.jar,你确实可以手动在项目B的build.gradle里加org.json的依赖:

implementation group: 'org.json', name: 'json', version: '20180130'

但这只是权宜之计,以后A.jar要是更新了org.json的版本,你还得手动跟着改,很容易出版本不一致的问题,所以优先解决A.jar的发布问题才是正道。

总结一下

Gradle默认是支持依赖传递的,你碰到的问题不是Gradle的锅,而是A.jar的发布环节没做好,导致依赖信息没同步到仓库。搞定pom.xml的上传问题,项目B就能自动获取到org.json依赖了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:41:42