Inconsistent JVM-target compatibility detected
日常遇到各种问题,今天升级了组件遇到AS报错:
Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (11) and 'kaptGenerateStubsDebugKotlin' (1.8).
这个错误信息表明在构建Android项目时,Java编译器(compileDebugJavaWithJavac)使用的JVM版本与Kotlin注解处理器(kaptGenerateStubsDebugKotlin)使用的JVM版本不一致。具体来说,Java编译器使用的是JVM 11,而Kotlin注解处理器使用的是JVM 1.8。要解决这个问题,需要确保所有组件都使用相同的JVM版本。
1、解决方案一:统一使用JVM 1.8
①修改Gradle配置文件: 打开项目的build.gradle文件,添加以下内容来设置全局的Java版本为1.8:
allprojects {
tasks.withType(JavaCompile) {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}②检查Kotlin插件版本: 确保你使用的Kotlin插件版本支持JVM 1.8。通常情况下,较新的Kotlin版本都会支持JVM 1.8及更高版本。
③同步项目: 修改完配置后,点击Android Studio中的“Sync Now”按钮以应用更改。
2、解决方案二:统一使用JVM 11
如果希望继续使用JVM 11,可以按照以下步骤操作:
①修改Gradle配置文件: 在项目的build.gradle文件中,将Java版本设置为11:
allprojects {
tasks.withType(JavaCompile) {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
}②更新Kotlin插件: 确保项目使用的Kotlin插件版本支持JVM 11,在build.gradle文件中更新Kotlin插件版本:
buildscript {
ext.kotlin_version = '1.5.31' // 或者更高版本
repositories {
google()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}③同步项目: 修改完配置后,点击Android Studio中的“Sync Now”按钮以应用更改。
通过以上任一方法,能够解决JVM版本不一致的问题。如果问题仍然存在,请检查是否有其他地方指定了不同的JVM版本,并进行相应的调整。