在升级至Android Studio V3.1.1后,执行任务“:app:kaptGenerateStubsDebugKotlin”失败。

15

我刚刚将android studio更新到V3.1.1,然后我的程序出了问题。在构建程序时,出现了两个错误:

enter image description here

  1. 第一个是'Run build'中的:

    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptGenerateStubsDebugKotlin'

enter image description here

  1. 另一个是Java编译器中的:

java.lang.ClassNotFoundException: org.jetbrains.kotlin.resolve.checkers.SimpleDeclarationChecker

enter image description here

这是我的gradle文件:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

apply plugin: 'kotlin-android-extensions'




android {
    compileSdkVersion 26


    defaultConfig {
        applicationId "com.restress.saniauto"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
    buildToolsVersion '27.0.3'
}


androidExtensions {
    experimental = true
}


buildscript {
    ext.kotlin_version = '1.2.21'
    repositories {
        maven { url 'https://maven.fabric.io/public' }
        mavenCentral()
    }
    dependencies {
        // The Fabric Gradle plugin uses an open ended version to react
        // quickly to Android tooling updates
        classpath 'io.fabric.tools:gradle:1.22.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}
allprojects {
    repositories {
        jcenter()
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    //RxJava
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.8'
    implementation 'io.reactivex:rxkotlin:0.55.0'
    //Room & RxAndroid2
    implementation "android.arch.persistence.room:runtime:$room_version"
    implementation "android.arch.persistence.room:rxjava2:$room_version"
    kapt "android.arch.persistence.room:compiler:$room_version"
    kapt "android.arch.persistence.room:compiler:$room_version"
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testImplementation "android.arch.persistence.room:testing:$room_version"
    //Design
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:percent:26.1.0'
  
}

你尝试过进行一次干净的构建吗?(也称为重新构建) - jonathanrz
是的,但清理和重建并没有起作用。 - restress
又失败了,还是相同的错误。 - restress
打开<root project>/gradle/wrapper/gradle-wrapper.properties文件并读取Gradle版本。它应该至少为4.4。如果不行,请尝试4.6。 - Eugen Pechanec
5个回答

4

好的,我终于解决了问题。

当我使用 --stacktrace 时,我发现 :app:kaptDebugKotlin 是一个构建Android程序的过程。 --stacktrace结果图片

在这个 :app:kaptDebugKotlin 过程中,出现了错误 java.lang.ClassNotFoundException: org.jetbrains.kotlin.resolve.checkers.SimpleDeclarationChecker

我怀疑Kotlin实现中有一些新东西,因此我将kotlin_version从1.2.21升级到了1.2.30。

然后我得到了更清晰的错误。出现了 room 参数错误。 room错误

因此,我将SQL查询中的 arg0 更改为 Dao函数中的参数名称

最终它运行成功了。


@resress:我是一名初学者安卓开发者,你能解释一下如何使用--stacktrace吗?因为我遇到了同样的错误,但它还是不能工作。 - newbie
5
./gradlew build --stacktrace - Kishan Vaghela
更新 Kotlin 版本有所帮助。 - androidStud

0

对于尝试使用Jetpack Compose时遇到此错误的人。

对我来说,我缺少composeOptions{...}块,因此我按下面所示添加了它,现在错误已得到解决。

buildFeatures {
    compose = true
    viewBinding = true
}

composeOptions {
    kotlinCompilerExtensionVersion = "1.0.1"
    kotlinCompilerVersion = "1.5.21" // Make sure this version is same as your Kotlin version
}

0

我遇到了同样的错误,并通过在我的项目 build.gradle 中更新 Kotlin 到最新版本(1.5.31)来解决它:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31"
    }
}

0

我正在从事测试项目。在使用 Kotlin 和 Dagger 时,这个任务失败了。

我尝试了很多方法,但错误信息没有意义,第二天我开始将类复制到新项目中,并发现问题是由于 Dagger 导致的,还将 Moshi 注释 @JsonClass(generateAdapter = true) 的 Java 类转换为 Kotlin。

MoviesViewModel @Inject constructor(private val movieService: MovieService): ViewModel()

然后就完成啦!


0
在我的情况下,我将kotlin插件的版本从1.8.20降级到了1.7.20,具体操作是在根项目的build.gradle文件中进行如下修改:
plugins {
    id 'com.android.application' version '8.0.2' apply false
    id 'com.android.library' version '8.0.2' apply false
    id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接