Android Compose项目Room编译失败:Unknown Kotlin JVM target:20
解决Android Studio中kaptGenerateStubsDebugKotlin任务失败(Unknown Kotlin JVM target:20)
问题背景
在Android Studio Flamingo中创建Compose应用并添加Room依赖后,编译时触发:app:kaptGenerateStubsDebugKotlin任务失败,提示Unknown Kotlin JVM target:20。已排查SQL语句、注解配置,尝试切换JVM 20和Kotlin 1.9.0但问题仍未解决。
报错详情
编译报错日志
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.3/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation. Daemon will be stopped at the end of the build > Task :app:kaptGenerateStubsDebugKotlin FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:kaptGenerateStubsDebugKotlin'. > Error while evaluating property 'compilerOptions.jvmTarget' of task ':app:kaptGenerateStubsDebugKotlin'. > Failed to calculate the value of property 'jvmTarget'. > Unknown Kotlin JVM target: 20 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 36s 13 actionable tasks: 1 executed, 12 up-to-date
堆栈跟踪关键信息
Caused by: java.lang.IllegalArgumentException: Unknown Kotlin JVM target: 20 at org.jetbrains.kotlin.gradle.dsl.JvmTarget$Companion.fromTarget(JvmTarget.kt:26) at org.jetbrains.kotlin.gradle.tasks.DefaultKotlinJavaToolchain$wireJvmTargetToToolchain$1$1.invoke(DefaultKotlinJavaToolchain.kt:78) ... 110 more
相关配置文件
模块级app/build.gradle.kts
plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") } android { namespace = "<hidden>" compileSdk = 33 defaultConfig { applicationId = "<hidden>" minSdk = 26 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } } buildTypes { release { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 // Tried VERSION_20 but no chnages targetCompatibility = JavaVersion.VERSION_1_8 // " " " " } kotlinOptions { jvmTarget = "1.8" // Tried 20 but Showed unknown jvmTarget here } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.4.3" } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { val navigation_version = "2.6.0" val room_version = "2.5.2" implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") implementation("androidx.activity:activity-compose:1.7.2") implementation(platform("androidx.compose:compose-bom:2023.03.00")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") implementation("androidx.navigation:navigation-compose:$navigation_version") implementation("androidx.compose.material:material-icons-extended:1.4.0") implementation("androidx.room:room-ktx:$room_version") kapt("androidx.room:room-compiler:$room_version") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") }
根目录build.gradle.kts
// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id("com.android.application") version "8.1.1" apply false id("org.jetbrains.kotlin.android") version "1.8.10" apply false }
解决方法
统一Kotlin版本与JVM目标兼容性
根目录gradle配置中Kotlin版本为1.8.10,而Kotlin 1.8.x仅支持到JVM目标17,不兼容JVM 20。有两种处理方案:- 升级Kotlin版本(支持JVM 20)
修改根目录build.gradle.kts中的Kotlin版本为1.9.0及以上:
同步后,在模块级plugins { id("com.android.application") version "8.1.1" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false }app/build.gradle.kts中同步JVM配置:compileOptions { sourceCompatibility = JavaVersion.VERSION_20 targetCompatibility = JavaVersion.VERSION_20 } kotlinOptions { jvmTarget = "20" } - 降级JVM目标(适配现有依赖)
保持Kotlin 1.8.10版本,将模块级gradle中的JVM目标设置为1.8或17,同时确保Android Studio项目JDK设置为对应版本:compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" }
- 升级Kotlin版本(支持JVM 20)
检查Room与Kotlin版本兼容性
Room 2.5.2与Kotlin 1.8.10、1.9.0均兼容,无需额外调整Room版本。清理缓存并重建项目
执行File -> Invalidate Caches... -> Invalidate and Restart清理缓存,然后重新运行构建任务。
内容的提问来源于stack exchange,提问作者0xdead
相关产品推荐
相关产品推荐

