Gradle Wrapper触发类路径JAR版本一致报错及Kotlin版本冲突咨询
报错原因
该冲突是Gradle自身内置的Kotlin运行时版本,与你项目中声明的Kotlin插件及标准库版本不匹配导致的:
- 你使用的Gradle 7.1.1版本,内置绑定的Kotlin版本为1.4.31,对应报错信息里wrapper目录下的1.4版本jar包
- 你在build.gradle.kts中指定的Kotlin JVM、kapt插件版本为1.5.21,对应缓存目录下的1.5版本jar包
两个版本的Kotlin标准库同时被加载到构建classpath中,就触发了版本不一致的报错。
Kotlin版本与Gradle Wrapper版本的关系
不需要完全保持一致,但是分两种场景要求不同:
- Gradle构建逻辑的Kotlin版本:也就是你编写build.gradle.kts脚本、自定义Gradle任务等构建层面代码用的Kotlin版本,必须和当前Gradle版本内置的Kotlin版本完全匹配,不能自行修改
- 项目业务代码的Kotlin版本:不需要和Gradle内置Kotlin版本一致,只要做好依赖隔离即可正常使用
解决方案
你可以任选一种方案处理:
- 强制指定项目Kotlin依赖版本,隔离构建环境和项目的依赖,在build.gradle.kts中添加如下配置:
configurations.all { resolutionStrategy { eachDependency { if (requested.group == "org.jetbrains.kotlin") { useVersion("1.5.21") } } } }
- 升级Gradle版本到适配Kotlin 1.5.21的版本,Kotlin 1.5.x对应适配的Gradle最低版本为7.2,你可以修改gradle/wrapper/gradle-wrapper.properties里的distributionUrl为Gradle 7.2及以上版本的发行包地址,即可从根本上解决内置版本不匹配问题。
内容的提问来源于stack exchange,提问作者vbyzjnlehi
相关产品推荐
相关产品推荐

