【问题标题】:ANTLR Tool version 4.7.1 used for code generation does not match the current runtime version 4.5.3用于代码生成的 ANTLR Tool 版本 4.7.1 与当前运行时版本 4.5.3 不匹配
【发布时间】:2020-06-22 09:18:33
【问题描述】:

我正在开发一个 Android 应用程序,目前正在使用 DSL 和一些库,突然构建给了我这个错误。

任务 :app:kaptDebugKotlin 失败 用于代码生成的 ANTLR 工具版本 4.7.1 与当前运行时版本 4.5.3 不匹配 用于解析器编译的 ANTLR 运行时版本 4.7.1 与当前运行时版本 4.5.3 不匹配 FAILURE:构建失败并出现异常。

出了什么问题:

任务 ':app:kaptDebugKotlin' 执行失败。 执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障 java.lang.reflect.InvocationTargetException(没有错误信息)

我一直在寻找,但没有成功...

如果您想查看问题,可以克隆项目。 Project GITHUB 我正在使用 Android Studio Canary 4.1。

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    至少对我来说,这个问题/错误的根本原因是没有正确处理数据绑定。 目前,Android Studio 没有为 .xml 文件中未引用的变量显示错误消息的机制。

    例如, 在 MyViewModel.kt 中,如果我有一个属性名称,

    var email
    

    并且您在 xml 中将此属性映射为,

    @={model.errEmail}
    

    而不是@={model.email}

    你会看到这个错误。

    如果您看到此错误,只需转到布局 xml 文件并检查绑定名称/映射并更正它。

    【讨论】:

      【解决方案2】:

      我遇到了类似的错误。我有 Java 中的所有文件,我将几个文件更改为 Kotlin。然后出现了这个问题。

      我有一个 Java 文件中的函数访问 Kotlin 文件中的静态函数。这就是应用崩溃的地方。

      Kotlin 文件中的代码:

      companion object{
          @JvmStatic
          fun myStaticFunction(){
              // body of the static function
          }
      }
      

      我在函数中添加了注解@JvmStatic(见上面的代码),错误得到了解决。

      这是发生此崩溃的非常具体的场景,可能并不适用于所有人。

      【讨论】:

        【解决方案3】:

        通过更改此问题为我解决了问题。 来自:

        implementation "androidx.room:room-runtime:$depVersion"
        implementation "androidx.room:room-compiler:$depVersion"
        

        到:

        implementation "androidx.room:room-runtime:$depVersion"
        annotationProcessor "androidx.room:room-compiler:$depVersion"
        

        【讨论】:

          【解决方案4】:

          对于仍然遇到此问题的任何人,只需将您的 Room 更新到最新版本:

          androidx.room:room-runtime:2.3.0-alpha04
          androidx.room:room-compiler:2.3.0-alpha04
          

          这是由于这个错误:https://issuetracker.google.com/issues/155215201

          【讨论】:

            【解决方案5】:

            有类似的问题。我试图在我的 recyclerview 中将 bindingAdapters 实现到 ViewHolder 的 TextView

            添加唯一应用属性后,我未能为 TextView 实现 bindingAdapter

            app:tDate="@{transaction}

            在我的 recylerView 项目的 xml 布局文件中。

            <TextView
                    android:id="@+id/trans_date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="TextView"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintStart_toEndOf="@+id/trans_category"
                    app:layout_constraintTop_toTopOf="parent"
                    app:tDate="@{transaction}"/>
            

            很好地解决了它。实现它。

            @BindingAdapter("tDate")
            fun TextView.setValue(item: Transactions){
                text = item.date.toString()
            }
            

            【讨论】:

              【解决方案6】:

              从 DAO 界面的查询中删除 suspend 关键字,解决了我的问题

              【讨论】:

                【解决方案7】:

                在 build.gradle(Module:app) 里面复制粘贴这段代码

                configurations.all() { resolutionStrategy.force "org.antlr:antlr4-runtime:4.5.3" resolutionStrategy.force "org.antlr:antlr4-tool:4.5.3" }

                【讨论】:

                • 我的构建失败并插入了这个
                【解决方案8】:

                所以解决方案来自 build.gradle

                基本上从 ROOM 的导入是这样的

                import(Room.compiler)
                

                所以我改成了这个,问题就解决了:)

                kapt(Room.compiler)
                

                【讨论】:

                • 谢谢你为我指明了正确的道路,并从字面上拯救了我的编程生涯......我在 Codelabs 上做一个项目,遇到了 Execution failed for task ':app:kaptdebugkotlin 错误,并且已经卡住了 13 天.你可以想象头痛和无奈的表情
                • 我已经有了这个,所以其他东西正在使用它,需要一个 kapt 选项
                • 我应该把那个放在哪里?
                • 在你的 app 文件夹中的 build.gradle 上,精确到依赖组
                猜你喜欢
                • 2020-07-06
                • 2015-12-22
                • 1970-01-01
                • 2015-07-07
                • 1970-01-01
                • 2018-06-07
                • 2012-03-16
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多