11
votes

Une erreur s'est produite lors de l'exécution de org.jetbrains.kotlin.gradle.internal.KaptExecution> java.lang.reflect.InvocationTargetException (pas de message d'erreur)

Le studio Android a donné l'erreur:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
//apply plugin: 'androidx.navigation.safeargs'

kotlin {
    experimental {
        coroutines 'enable'
    }
}

android {
    compileSdkVersion 29
    defaultConfig {
        applicationId "com.bestcred.coursetthree"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        //vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // Enables data binding.
    buildFeatures {
        dataBinding true
    }
}

dependencies {


    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // Support libraries
    implementation "androidx.appcompat:appcompat:1.2.0"
    implementation 'com.google.android.material:material:1.2.0'
    implementation "androidx.fragment:fragment:1.2.5"
    implementation "androidx.constraintlayout:constraintlayout:2.0.0"

    // Android KTX
    implementation 'androidx.core:core-ktx:1.3.1'

    // Room and Lifecycle dependencies
    implementation "androidx.room:room-runtime:$room_version"
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    kapt "android.arch.persistence.room:compiler:$room_version"

    // Kotlin Extensions and Coroutines support for Room
    implementation "androidx.room:room-ktx:$room_version"

    // Coroutines
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutine_version"
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutine_version"

}

kotlin_version = "1.4.0"
room_version = "2.2.5"
coroutine_version = '1.3.9'

Je souhaite ajouter dans mon projet Kotlin Coroutines et l'utiliser avec la base de données Room. Mais après avoir ajouté toutes les bibliothèques, j'ai eu cette erreur. Ce sont toutes les informations du compilateur.

J'ai identifié, c'est à cause de l'annotation @Database. Si j'ai supprimé cette annotation, l'erreur n'apparaît pas, mais Room ne fonctionne pas non plus.

Mon fichier gradle:

Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)

Je mets à jour la version Room et ajoute Kotlin Coroutines. Quel problème? entrez la description de l'image ici


0 commentaires

5 Réponses :


3
votes

Vous avez besoin de changement:

kapt "androidx.room:room-compiler:$room_version"

à

kapt "android.arch.persistence.room:compiler:$room_version"


1 commentaires

A travaillé pour moi. Rien d'autre ne l'a fait.



0
votes

J'ai dû mettre à jour Room vers la dernière version 2.2.5 et cela a résolu le problème.


0 commentaires

3
votes

Cette exception se produit lorsque vous avez fait une erreur sur la base de données Room ou Doa ou une classe d'entité par exemple j'avais fait des erreurs dans la classe d'entité

  1. J'avais créé le champ auto-généré de la classe Entity val au lieu de var
  2. J'avais mis une annotation de suppression sur deux fonctions avec un nom différent mais elles supprimaient les mêmes données

donc je suggérerais de vérifier soigneusement l'entité, le dao ou la classe de base de données si vous avez importé la bonne dépendance.

@Entity(tableName = "user_table")
data class User(
    val firstName: String,
    val lastName: String,
    val age: Int
) {
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0 //**do not made it val**
}


2 commentaires

Cette réponse est également valable pour ce type d'erreur. J'ai une erreur dans un nom de clé étrangère et je l'ai corrigée pour résoudre le problème. Merci


ouais j'ai eu une erreur dans la classe d'entrée.



0
votes

J'avais fait face au même problème. Le problème était que j'utilisais les fonctions de suspension coroutine dans la salle DAO et que je n'avais pas implémenté les implémentations nécessaires. Ce qui suit a fonctionné pour moi, essayez de remplacer les dépendances de salle existantes par:

def room_version = "2.2.5" //Use latest version

"androidx.room:room-runtime:$room_version"
"androidx.room:room-compiler:$room_version"
"androidx.room:room-ktx:$room_version"

Si ce qui précède ne fonctionne pas, accédez à Analyser-> Inspecter le code et recherchez les avertissements ou erreurs de rupture de code (en particulier dans la salle)


0 commentaires

21
votes

L'interface utilisateur d'Android Studio cachait juste l'erreur ...

lorsque l'erreur s'est produite, il a mis en surbrillance l'élément dans la vue de liste et a montré un message inutile dans la vue du terminal. un message d'erreur inutile apparaît lorsqu'un élément erroné est sélectionné

pour trouver l'erreur réelle, sélectionnez l'élément racine dans la vue de liste afin qu'Android Studio affiche la totalité de la sortie de construction dans la vue du terminal, puis faites défiler pour trouver l'erreur. un message d'erreur utile apparaît lorsque vous sélectionnez l'élément racine dans la vue de liste sur la gauche


2 commentaires

donnez à cet homme une médaille, vous m'avez sauvé du temps, que Dieu vous bénisse!


tu as sauvé ma journée