KotlinCompile构造方法找不到,Android应用运行失败求助
问题
运行Android应用时触发以下错误:
无法找到方法
void org.jetbrains.kotlin.gradle.tasks.KotlinCompile.<init>(org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompilerOptions, org.gradle.workers.WorkerExecutor, org.gradle.api.model.ObjectFactory)
执行Sync Project with Gradle Files无异常,但运行应用就报错。已尝试Invalidate Caches/Restart等方案,问题仍未解决。
开发环境:Android Studio 2022.1、Kotlin语言
build.gradle(:app)
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id("kotlin-kapt") id("dagger.hilt.android.plugin") id("com.google.devtools.ksp") version "1.8.0-1.0.8" } android { namespace 'com.example.mediastoredao_23jan' compileSdk 33 defaultConfig { applicationId "com.example.mediastoredao_23jan" minSdk 24 targetSdk 33 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.6.0' implementation 'com.google.android.material:material:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' implementation("com.google.dagger:hilt-android:2.44") kapt("com.google.dagger:hilt-android-compiler:2.44") implementation ('com.jakewharton.timber:timber:5.0.1') def room_version = "2.5.0" implementation("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // To use Kotlin annotation processing tool (kapt) kapt("androidx.room:room-compiler:$room_version") // To use Kotlin Symbol Processing (KSP) ksp("androidx.room:room-compiler:$room_version") // optional - Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:$room_version") // lifecycle def lifecycle_version = "2.5.1" implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version" } // Allow references to generated code kapt { correctErrorTypes = true }
build.gradle(项目级)
// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id 'com.android.application' version '7.4.0' apply false id 'com.android.library' version '7.4.0' apply false id 'org.jetbrains.kotlin.android' version '1.7.21' apply false id("com.google.dagger.hilt.android") version "2.44" apply false }
解决方案
问题原因
- KSP与Kotlin版本不兼容:项目级build.gradle中Kotlin版本为
1.7.21,但app模块中KSP版本使用了1.8.0-1.0.8,两者版本不匹配会导致Gradle任务初始化失败。 - Room注解处理器重复配置:同时启用了
annotationProcessor、kapt和ksp三种Room注解处理器,容易引发冲突。
修复步骤
- 统一KSP与Kotlin版本
将app模块中的KSP版本修改为与项目级Kotlin版本匹配的版本(KSP版本格式为[Kotlin版本]-[KSP版本],对应Kotlin 1.7.21的KSP稳定版本为1.7.21-1.0.8):
// build.gradle(:app) 中修改plugins块 plugins { // ...其他插件 id("com.google.devtools.ksp") version "1.7.21-1.0.8" }
- 移除重复的Room注解处理器
删除dependencies中的annotationProcessor("androidx.room:room-compiler:$room_version")行,因为Kotlin项目使用kapt或KSP即可,无需保留Java的annotationProcessor配置:
// build.gradle(:app) 中修改dependencies块 def room_version = "2.5.0" implementation("androidx.room:room-runtime:$room_version") // 移除这一行:annotationProcessor("androidx.room:room-compiler:$room_version") kapt("androidx.room:room-compiler:$room_version") ksp("androidx.room:room-compiler:$room_version")
- 清理并重新构建
- 执行
File > Sync Project with Gradle Files - 执行
Build > Clean Project,再执行Build > Rebuild Project - 重新运行应用
内容的提问来源于stack exchange,提问作者Evelyn lau
相关产品推荐
相关产品推荐

