315 votes

Un échec s'est produit lors de l'exécution de org.jetbrains.kotlin.gradle.internal.KaptExecution

Tout d'un coup, je commence à obtenir cette erreur, et je ne suis pas obtenir idée pourquoi si quelqu'un juste me faire savoir où cette erreur est, sera assez utile. Autant que je suis capable d'obtenir est ce en raison de la nouvelle mise à jour de Android studio. Résumé détaillé de l'erreur que je reçois.

Task :app:kaptDebugKotlin
    ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1C:\Users\shubh\Downloads\MarginCalculator\app\build\generated\source\kapt\debug\com\kotlin_developer\margincalculator\DataBinderMapperImpl.java:10: error: cannot find symbol
    import com.kotlin_developer.margincalculator.databinding.FragmentCalculatorScreenBindingImpl;

    symbol:   class FragmentCalculatorScreenBindingImpl

    Task :app:kaptDebugKotlin FAILED
    location: package com.kotlin_developer.margincalculator.databinding
    FAILURE: Build failed with an exception.

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

* 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 17s
29 actionable tasks: 27 executed, 2 up-to-date

7voto

J'ai eu le même problème. Dans mon cas, le problème concernait la base de données. J'ai dû modifier la ligne de code suivante @Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)

J'ai ajouté une autre table dans la base de données mais j'ai oublié d'ajouter la table dans la ligne ci-dessus.

6voto

Si vous avez mis à jour le classpath 'com.Android.tools.build:gradle:4.0.0', remplacez le précédent. Remplacez la version précédente

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.3'
}

Et changez gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-   all.zip`

6voto

Ali Points 57

J'ai eu le même problème. Laissez-moi vous expliquer comment j'ai rencontré ce problème et comment je l'ai résolu, afin que vous puissiez vous faire une idée plus précise.

Avant de résoudre

@Entity(tableName = "modules")
data class Module
(
    @PrimaryKey val id: Int,
    val name: String
)

@Entity(tableName = "sessions")
data class Session
(
    @PrimaryKey(autoGenerate = true) var id: Int,
    @ColumnInfo(name = "module_id") val moduleId: Int,
    @ColumnInfo(name = "start_time") val startTime: String,
    @ColumnInfo(name = "end_time") val endTime: String
)

data class ModuleSession
(
    @Embedded val module: Module,
    @Relation(
        parentColumn = "id",
        entityColumn = "module_id"
    )
    val sessions: List<Session>,
    @ColumnInfo(name = "is_updated") val isUpdated: Boolean = false // The problem
)

Dans le DAO

@Transaction
@Query("SELECT * FROM modules")
abstract suspend fun getModuleSession(): List<ModuleSession>

L'erreur que j'ai obtenue était

A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution

J'ai donc creusé plus profondément et j'ai trouvé le message ci-dessous

The columns returned by the query does not have the fields [isUpdated] in com.gmanix.oncampusprototype.Persistence.ModuleSession even though they are annotated as non-null or primitive. Columns returned by the query: [id,name]
    public abstract java.lang.Object getModuleSession(@org.jetbrains.annotations.NotNull()

J'ai supprimé le champ IsUpdated du POJO ModuleSession et je l'ai ajouté à la table de session.

Après les changements

@Entity(tableName = "sessions")
data class Session
(
    @PrimaryKey(autoGenerate = true) var id: Int,
    @ColumnInfo(name = "module_id") val moduleId: Int,
    @ColumnInfo(name = "start_time") val startTime: String,
    @ColumnInfo(name = "end_time") val endTime: String,
    @ColumnInfo(name = "is_updated") val isUpdated: Boolean = false
)

data class ModuleSession
(
    @Embedded val module: Module,
    @Relation(
        parentColumn = "id",
        entityColumn = "module_id"
    )
    val sessions: List<Session>
)

D'un autre côté, vérifiez s'il y a un champ dans le champ SELECT qui est un suspect causant des problèmes ou vous pouvez l'annoter avec @Ignore

Cependant, vous pouvez poster votre code si vous n'êtes toujours pas à l'aise.

J'espère que cela pourra aider

6voto

Ahmet Points 266

Dans mon cas, j'ai oublié d'ajouter @PrimaryKey dans la classe Entity.

5voto

Dashesh Points 83

Dans mon cas, j'ai eu cette erreur en passant de jcenter() à mavenCentral(), une de mes dépendances n'était disponible que sur jcenter() et pas sur mavenCentral(). J'ai donc soumis un problème au propriétaire de la même chose sur Github et j'attendrai de supprimer jcenter() jusqu'à ce qu'il soit déplacé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X