执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障

Shu*_*ter 227 android kotlin android-studio

突然间我开始收到这个错误,我不知道为什么如果有人让我知道这个错误在哪里,就会有足够的帮助。由于android studio的新更新,我能得到的最多。我得到的错误的详细摘要。

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
Run Code Online (Sandbox Code Playgroud)

Eri*_*ric 380

Android Studio 的 UI 只是隐藏了错误...

当错误发生时,它会在列表视图中突出显示该项目,并在终端视图中显示一条无用的消息。 坏坏

要找到真正的错误,请在列表视图中选择根项目,以便 Android Studio 在终端视图中显示整个构建输出,然后滚动以查找错误。 好好

  • 如果你有一个编译时 Room (DB) 错误,它会这样显示 - 这意味着你的一个或一些查询是错误的 (17认同)
  • 从点赞数来看,这里的 UI 决策并不是一个好的决策 (13认同)
  • 这应该被标记为正确答案 (4认同)
  • 这里只有有用的答案,因为问题可能会有所不同! (3认同)
  • 非常感谢,伙计。我遇到了这个问题,因为我没有在我的 Dao 抽象类中添加 @Dao 注释。 (2认同)
  • @NaimulKabir 谢谢。我太怀念那该死的刀了。浪费了近2个小时 (2认同)

小智 78

也许我的答案有点晚了,但无论如何,我遇到了同样的错误。构建失败可能是由 Android Studio 未能指出的一些错误引起的,这可能是由于项目大小非常大。

这是指出确切错误的简单方法。

  1. 在 Android Studio 中,转到Analyze菜单并单击Inspect Code;检查整个项目,单击“确定”并等待检查完成。

    检查代码

  2. 现在您将看到一个选项卡,该选项卡将指出所有错误、警告等,您现在可以解决真正的问题。

    错误选项卡

  • 我不明白为什么Android Studio在构建失败时不直接显示错误,这没有意义。谢谢你,给了我很多帮助 (11认同)
  • 现在在“代码>检查代码...”。 (4认同)
  • 是的,它显示了完全错误。(我在 XML 中犯了一些错误) (2认同)

too*_*o42 63

找出潜在问题的方法是运行以下命令:

./gradlew assembleDebug --stacktrace
Run Code Online (Sandbox Code Playgroud)


Mat*_*tti 53

单击终端上的 --stacktrace 可查看错误的详细信息。你可以在这里找到它:

在此输入图像描述

M1芯片方案

如果您有 MacBook Pro,那么kapt "org.xerial:sqlite-jdbc:3.34.0"在 room-compiler 之前添加可能会解决您的问题。

  kapt "org.xerial:sqlite-jdbc:3.36.0" // Only for computer with M1 CPU
  implementation("androidx.room:room-ktx:$room_version")
  kapt "androidx.room:room-compiler:$room_version"
Run Code Online (Sandbox Code Playgroud)

在这里查看更多内容

  • 对于 Apple M1 用户:此解决方案适合您!。 (4认同)
  • “M1 芯片解决方案”对我的案例也有帮助。第一行是“kept: org ...” (2认同)

Abh*_*mar 41

我在将 Android Studio 升级到Arctic Fox(2020.3.1).

我通过将 JDK 版本从1.8更新为 解决了这个问题Embedded JDK

更改 JDK:

  • 在 Android Studio 中打开您的项目,然后选择“文件”>“设置...”>“构建、执行、部署”>“构建工具”>“Gradle”

  • 在Mac:Android Studio > 首选项... > 构建、执行、部署 > 构建工具 > Gradle。

  • 在 Gradle JDK 下,选择嵌入式 JDK 选项。

正如这里提到的


tua*_*n91 31

改变

implementation "android.arch.persistence.room:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"
Run Code Online (Sandbox Code Playgroud)

至(2021 年 9 月 4 日更新)

 implementation "androidx.room:room-runtime:2.3.0"
 annotationProcessor "androidx.room:room-compiler:2.3.0"
Run Code Online (Sandbox Code Playgroud)

  • 我正在使用相同的版本,并且随着新的更新它不再起作用。 (2认同)
  • 这不是正确的答案,因为您现在必须使用“kapt”。对我来说解决问题的是更新 android studio gradle 构建工具和 gradle 版本。它为我解决了这个问题并保留了“kapt” (2认同)

Aja*_*J G 25

我遇到了同样的问题,所以我尝试通过执行获取更多信息

gradle->app->Tasks->Build->assemble

在此之后,我得到了确切的错误消息“注释处理时出错”。我检查了我最近调整的 DAO 类,发现其中一种方法返回类型未定义。

//Before
@Query("SELECT countryName FROM country_table WHERE countryCode= :code")
    fun getCountryNameForCode(code: String)

//After
@Query("SELECT countryName FROM country_table WHERE countryCode= :code")
    fun getCountryNameForCode(code: String): String
Run Code Online (Sandbox Code Playgroud)

  • `gradle->app->Tasks->Build->assemble` 那是什么? (7认同)
  • @user25 Gradle 工具窗口 (2认同)
  • 我还是不明白…… (2认同)
  • 对于新的。@AjayJG 的意思是在 gradle 侧菜单中从 IDE 打开应用程序,然后打开任务 (2认同)

小智 19

我有一段时间遇到了同样的错误,然后我开始检查其他包,我知道我在数据库代码中犯了一个错字错误。因此,“浏览您的数据库和其他活动类文件,您可能会发现其中的一些错误。”

  • 什么样的错误? (6认同)
  • 就我而言,我忘记在 MyDao 界面中添加 `@Dao` (2认同)

Ibr*_*zin 13

好的,如果您使用 Android Studio 4.1.2,也会出现此问题。

所以,你要做的是:

  • 下载jdk 11(搜索下载)

  • 在 Android Studio 中,转到File -> Project Structure -> Jdk Location -> 更改为刚刚下载的 Jdk 的路径。


Ren*_*ies 9

对我来说,一堆引用错误和 XML 表达式中的DataBinding错误产生了这个错误。

我已经删除了<variable/>一个layout文件,因为我想,我不再需要它了。我忘了我在layout文件中引用了变量。

构建项目后,这产生了一个错误,无法导入BindingImpl该类,因为它不存在,并且此错误仅显示为与上述KaptExecution错误并行的警告。

搜索了一段时间,发现这个错误并解决了。然后,显示了一堆参考错误,因为我重命名了一些东西,但它没有在Fragment文件中重命名。也解决了这些错误后,构建对我来说完成了,没有错误或警告。

  • 正确的是,此错误始终与我们的数据绑定使用的 XML 文件有关。 (2认同)

Muj*_*n T 8

如果您已升级到类路径 'com.android.tools.build:gradle:4.0.0' 将其替换为以前的版本

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.3'
}
Run Code Online (Sandbox Code Playgroud)

并更改 gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-   all.zip`
Run Code Online (Sandbox Code Playgroud)

  • 这不是正确的解决方案 (27认同)
  • 我在 4.0.1 上发现了这个异常 (4认同)
  • @ShubhamTater 这是解决方案,直到 gradle4.0.0 得到修复。这是临时解决办法。一旦gradle4.0.0被修复。我们可以更新gradle 4.0以上 (2认同)

小智 8

尝试构建您的项目

kapt.use.worker.api=false 
Run Code Online (Sandbox Code Playgroud)

在您的 gradle.properties 设置文件中

参考:https : //youtrack.jetbrains.com/issue/KT-40750


Sal*_*vaf 8

在经历了很多痛苦之后,我决定尝试annotationProcessor而不是kapt希望它至少显示一条错误消息或任何可以帮助我找到源头的东西。但幸运的是(或不幸的是;因为浪费了时间),它成功构建,没有任何错误。它kapt本身主要是一个错误。所以,试试这个解决方案,它可能会有所帮助。

  • 谢谢。我将其切换为使用“annotationProcessor”并成功构建。然后我将其切换回“kapt”,它能够再次构建。 (2认同)

Kon*_*dis 7

我有同样的问题。就我而言,问题出在数据库上。我不得不改变这行代码 @Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)

我在数据库中添加了另一个表,但忘记在上面的行中添加表。


and*_*v71 7

我这里也有同样的问题。就我而言,原因是我在我的一个 dagger 模块中忘记了 @Module 注释。

要找到这种 AS 警报的真正问题,有必要深入了解:标题中的消息只是最后一个,显示错误的 1 个或多个原因,选择左侧的根元素,向您显示确切的问题,请检查下面的打印屏幕:

详细 最后的消息


Ali*_*Ali 6

我有同样的问题。让我向您介绍我如何解决问题以及我解决问题的方法的示例,也许您可​​以获得更大的图景。

解决前

@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
)
Run Code Online (Sandbox Code Playgroud)

在 DAO

@Transaction
@Query("SELECT * FROM modules")
abstract suspend fun getModuleSession(): List<ModuleSession>
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
Run Code Online (Sandbox Code Playgroud)

所以我挖得更深,发现下面的消息

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()
Run Code Online (Sandbox Code Playgroud)

我从 POJO ModuleSession 中删除了 IsUpdated 字段并将其添加到会话表中

更改后

@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>
)
Run Code Online (Sandbox Code Playgroud)

另一方面,交叉检查是否有任何字段 SELECT语句中是导致问题的嫌疑人,或者您可以用@Ignore

但是,如果您仍然不舒服,您可以发布您的代码。

我希望这可能会有所帮助

  • 是的,请。你是如何深入挖掘的? (2认同)
  • @LeonardoSibela 对此感到抱歉,我的意思是在构建时添加 --stacktrace 选项,以便我可以获得有关错误的更多信息。 (2认同)

Ahm*_*met 5

就我而言,我忘记在实体类中添加 @PrimaryKey。


Nas*_*sib 5

当我将ROOM添加到我的应用程序(Kotlin)时,我遇到了同样的问题。我很难找出问题所在,最后发现我正在使用以下内容将ROOM添加到我的应用程序中。

    //room
    implementation 'android.arch.persistence.room:runtime:1.1.1'
    kapt "android.arch.persistence.room:compiler:1.1.1"
Run Code Online (Sandbox Code Playgroud)

所以我用下面的内容改变了上面两行并摆脱了痛苦。

    def room_version = "2.2.6"
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
Run Code Online (Sandbox Code Playgroud)

如果对您有帮助,请点击向上按钮:D


Das*_*esh 5

就我而言,当从 jcenter() 移动到 mavenCentral() 时,我收到此错误,我的依赖项之一仅在 jcenter() 而不是 mavenCentral() 上可用。所以我在 github 上向所有者提交了相同的问题,并将等待删除 jcenter() 直到它被移动。


小智 5

看起来房间库和苹果 M1 芯片有问题。

将您的房间库版本更新到 2.4.0-alpha03或更高版本并重新同步项目。

为我工作!


归档时间:

查看次数:

154179 次

最近记录:

4 年,3 月 前