升级Kotlin至1.8.20/21后Gradle同步报NoClassDefFoundError如何解决?
Kotlin版本升级后Gradle同步NoClassDefFoundError问题解决
问题详情
维护一个基于Kotlin的大型项目,所有Kotlin依赖版本通过ext.version.kotlin统一管理。将Kotlin版本从1.8.0升级至1.8.20/1.8.21(同步更新所有Kotlin依赖)后,Gradle同步失败,抛出异常:
FAILURE: Build failed with an exception. * Where: Build file '/Users/{user}/StudioProjects/{project}/build.gradle' line: 75 * What went wrong: A problem occurred configuring root project '{project}'. > Failed to notify project evaluation listener. > java.lang.NoClassDefFoundError: org/jetbrains/kotlin/gradle/plugin/KotlinCompilerPluginSupportPlugin Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: org/jetbrains/kotlin/gradle/plugin/KotlinCompilerPluginSupportPlugin at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2053) at com.google.common.cache.LocalCache.get(LocalCache.java:3966) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989) at build_9p9pcmezmt1efrj5n8osntc17$_run_closure1$_closure6.doCall(/Users/{user}/StudioProjects/{project}/build.gradle:75)
错误触发在build.gradle第75行,代码为:if (project.plugins.hasPlugin("{any plugin name}")) {
当前环境:AGP 7.4.0、Gradle 7.6、Android Studio Electric Eel、Kotlin 1.8.21。已尝试升级AGP和Gradle至最新版本,问题未解决。
解决方案
- 排查第三方插件兼容性:
KotlinCompilerPluginSupportPlugin是Kotlin Gradle插件内部类,升级Kotlin版本后,部分第三方插件可能未适配该版本的API变更。检查项目中使用的非官方Kotlin插件、自定义插件,确认它们是否支持Kotlin 1.8.20+,必要时升级这些插件版本。 - 清理Gradle缓存:执行以下命令清除本地Gradle缓存,避免旧版本依赖残留:
执行完成后重新同步项目。./gradlew cleanBuildCache rm -rf ~/.gradle/caches - 调整插件应用顺序:确保Kotlin Gradle插件在其他依赖Kotlin的插件之前应用。比如在根
build.gradle中,先应用kotlin-android或kotlin-jvm插件,再加载其他相关插件。 - 延迟插件检查逻辑:第75行的插件检查可能在Kotlin插件完全初始化前执行,导致无法找到相关类。将该逻辑移至
afterEvaluate块中,确保所有插件加载完成后再执行:project.afterEvaluate { if (project.plugins.hasPlugin("{any plugin name}")) { // 原有业务逻辑 } } - 确认Kotlin依赖全量同步:检查所有模块的
build.gradle,确保所有Kotlin相关依赖(如kotlin-stdlib、kotlin-reflect、kotlin-gradle-plugin等)都使用统一的ext.version.kotlin版本,无硬编码的旧版本号遗漏。
内容的提问来源于stack exchange,提问作者Andrii Drobiazko
相关产品推荐
相关产品推荐

