【问题标题】:After adding Kapt plugin - A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution添加 Kapt 插件后 - 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障
【发布时间】:2020-11-17 20:47:39
【问题描述】:

首先,

我很清楚,这里已经发布了很多关于此错误的问题,但似乎没有一个问题有合适的解决方案,尤其是我需要的解决方案。

我被以下错误困扰了一个多星期。

我正在开发一个使用 Kotlin、MVVM、Clean Arch 和导航组件构建的 android 项目。

我最近添加了领域数据库,为此我必须添加以下插件。

apply plugin: 'kotlin-kapt'

apply plugin: 'realm-android'

我认为真正的问题从这里开始。

(之后我添加了一个 DatabaseManager 类,它利用了我编写的一些领域扩展函数来进行数据库操作。)

在此之后编译项目时,总体出现以下错误。

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

连同以下

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

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.1.1/userguide/command_line_interface.html#sec:command_line_warnings

BUILD FAILED in 7s
30 actionable tasks: 6 executed, 24 up-to-date

它指向我的 MainActivity 类,该类没有改变,似乎没有任何错误或错别字。 我很确定 kapt 注释处理器在这里做了一些我似乎没有弄清楚的肮脏工作。

如果我能克服这个奇怪的错误,我会大大松一口气。

补充说明:

  1. 我将整个项目分为三个模块。这三个都有 kapt 插件(只是以防万一)

  2. 我将 Koin 用于 DI

希望有人能帮帮我!

【问题讨论】:

  • 检查你的道课程。从java转换时,名称以“get”开头的方法可能会出错

标签: android kotlin mvvm realm kapt


【解决方案1】:

经过一周的努力,我终于找到了问题。

我为领域添加了kotlin-kapt 插件。

我有一个名为interface 的文件夹来保存一些接口。

我在 MainActivity 的 interface 文件夹中实现了其中一个接口。

现在接口的import 是这样的,

import com.android.app.java.interface.Listener

其中,interface 关键字混淆了注解处理器,因此在生成存根时出错。

我重命名了文件夹(从 interface 到 intrface)。

这解决了错误。

这是一个非常简单的错误,花了我一周的时间。

总之,找到问题了。耶!

【讨论】:

  • 好吧,不要使用像上面仅供参考的蹩脚名字。
  • 我在领域面临同样的问题任何解决方案?
  • @Arbaz.in 您遇到的错误是什么?在哪个文件中?您是否将 kotlin 关键字作为文件/包名称?
  • @Arbaz.in 请发布错误。停止工作了吗?
  • 我将领域从 4.3.3 更新到 10.3.0,突然在每次领域查询执行时都出现此错误 ERROR: allowWritesOnUiThread(true)
【解决方案2】:

我遇到了同样的问题,因为我忘记在实体中包含的列表中添加转换器。在房间中,您必须添加转换器才能将列表存储在数据库中

【讨论】:

  • 其实这是很重要的一点,没人能注意到它,我遇到了这个问题,搜索了很多,直到我找到了这个答案。谢谢兄弟
【解决方案3】:

我遇到了类似的问题,并且一直在寻找问题。我找到了另一个线程,您可以运行分析 -> 检查代码来查找问题,但这对我不起作用并且什么也没显示,但显然其他人已经成功了。

我的问题最终出在我的数据库上(我使用的是 Room),而修复只是删除了我在 DAO 中的插入函数上的“暂停”..

我通过查看 java 生成的代码文件夹发现了这个问题。查看使用“_Impl”生成的所有数据库文件。错误以红色突出显示,然后我可以从这里推断出了什么问题(尽管我不知道为什么 Android Studio 不能只在构建输出中向我显示该错误:/)

祝你好运!那些 kapt 错误是最糟糕的

【讨论】:

    【解决方案4】:

    更换

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

    通过

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

    也可以修复它。

    【讨论】:

    • 太好了,我遇到了同样的问题,tnx
    【解决方案5】:

    我遇到了同样的问题。我忘记在我的房间数据库中添加@Dao 注释

    【讨论】:

      【解决方案6】:

      我在带有Long 参数的方法上添加了@Delete 注释:

      @Delete
      fun deleteRelationShip(userId: Long, friendId: Long)
      

      --debug build 在大多数情况下都可以提供帮助。在这种情况下,它表示不能在 Element 中转换 long

      然后就变成了

      @Delete
      fun deleteRelationShip(relationShip: RelationShip)
      

      【讨论】:

        【解决方案7】:

        对我来说,当我重写 dao 类时它解决了问题

        【讨论】:

          【解决方案8】:

          检查您在 Model DB 中的字段 也许你有 val,像这样更改为 var:

          open class User(var id: Int?= null,
                      var name: String? = null,
                      var lastName: String? = null): RealmObject()
          

          【讨论】:

            【解决方案9】:

            如果在应用中使用了 Room,可能与 Room 相关类中添加的一些错误有关。我有同样的错误,花了几个小时才弄清楚这个问题。我在@Database(entities=[...]) 的实体会话中给出了错误的类名

            【讨论】:

              【解决方案10】:

              我遇到了同样的问题,但我所做的是将所有依赖项更新到最新版本,这对我有用

              【讨论】:

                【解决方案11】:

                就我而言,有什么帮助 将apply plugin 'kotlin-kapt' 替换为 plugins{ id 'kotlin-android' id 'kotlin-kept'} 仅评论应用插件就足够了,仍然要摆脱警告和 kotlin-android-extensions 我必须重写一些代码以不使用合成类。

                【讨论】:

                  猜你喜欢
                  • 2022-09-20
                  • 2020-09-19
                  • 1970-01-01
                  • 2020-11-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-12-18
                  • 2021-05-17
                  相关资源
                  最近更新 更多