如何修复Android Studio Giraffe中的kaptGenerateStubsDebugKotlin任务异常
错误信息
Execution failed for task ':app:kaptGenerateStubsDebugKotlin'.
'compileDebugJavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubsDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain
问题原因
Java编译任务与kapt的stubs生成任务使用的JVM目标版本不一致,即便已在kotlinOptions中设置jvmTarget = "1.8",kapt仍可能未继承该配置,导致版本冲突。
解决方案
方法1:使用JVM Toolchain统一版本**(推荐)**
在app模块的build.gradle的android块中添加toolchain配置,统一所有编译任务的JVM版本:
android { // 保留原有其他配置 namespace = "com.test.test" compileSdk = 33 // ... 其他配置 // 替换或补充以下配置 compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } // 添加Toolchain配置 java { toolchain { languageVersion = JavaLanguageVersion.of(8) } } }
Toolchain是官方推荐的方式,能确保Java编译、Kotlin编译、kapt等所有相关任务使用完全一致的JVM版本,从根源避免版本不匹配问题。
方法2:直接为kapt指定JVM版本
若不想使用Toolchain,可在kapt配置块中强制指定JVM目标版本,与Java编译版本保持一致:
// Allow references to generated code kapt { correctErrorTypes = true generateStubs = true // 添加以下配置 javacOptions { option("-source", "1.8") option("-target", "1.8") } }
方法3:同步Compose Compiler与Kotlin版本(可选)
当前使用的Kotlin 1.8.10与Compose Compiler 1.4.3版本不匹配(Kotlin 1.8.x对应Compose Compiler 1.4.7+),虽然不是当前错误的直接原因,但更新后可避免潜在问题:
composeOptions { kotlinCompilerExtensionVersion = "1.4.7" }
后续操作
- 修改配置后,点击Android Studio右上角的Sync Project with Gradle Files按钮重新同步项目
- 若问题仍存在,执行
File -> Invalidate Caches... -> Invalidate and Restart清除缓存并重启IDE
内容的提问来源于stack exchange,提问作者reza_khalafi

