升级Android Studio及Gradle插件后ButterKnife运行报错求助
解决JVM目标版本不匹配问题
报错核心是Java编译任务(compileDebugJavaWithJavac)的目标版本为1.8,而Kotlin编译任务(compileDebugKotlin)的目标版本为17,两者JVM目标兼容性必须保持一致,以下是两种解决思路:
方案1:统一设置为Java 17(适配新版Gradle,推荐)
在模块级的build.gradle(Groovy)或build.gradle.kts(Kotlin DSL)中添加配置,同步Java和Kotlin的JVM目标版本:
Groovy 语法:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } }
Kotlin DSL 语法:
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } }
方案2:统一降级为Java 1.8(适配旧依赖)
如果项目依赖(如旧版ButterKnife)暂不支持Java 17,可统一将JVM目标版本设为1.8:
Groovy 语法:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } }
Kotlin DSL 语法:
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } }
额外提示
- ButterKnife已停止维护,最新版本仅兼容Java 8,若选择升级到Java 17,建议替换为ViewBinding等官方替代方案,避免后续出现更多兼容问题。
- 修改配置后,执行
File → Sync Project with Gradle Files同步项目,再重新运行即可。
内容的提问来源于stack exchange,提问作者Zaman Rajpoot
相关产品推荐
相关产品推荐

