【问题标题】:Android Kotlin - Room Local Storage, build error "A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution"Android Kotlin - 房间本地存储,构建错误“执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障”
【发布时间】:2020-10-01 11:50:03
【问题描述】:

[使用 Gradle 4.0.0],我尝试在 Andriod Studio 4 的 Android Kotlin 中通过 room 实现本地存储。 当我尝试构建项目时,我在构建控制台中遇到错误

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

图片:

分级:

apply plugin: 'kotlin-kapt'

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

请帮我看看解决方案

【问题讨论】:

  • 您能从错误输出中发布更多详细信息吗?类似于this similar question 中显示的内容。
  • 这件事刚刚发生在我身上。解决方案是查看我的@Query 注释以了解 SQL 查询中的语法错误。一旦我修复了它们,kapt 错误就消失了,应用程序构建成功。
  • 我最近遇到了同样的问题,我意识到我没有将实体类添加为数据库的一部分@Database(entities = [ ProductEntityOne::class, ProductEntityTwo::class])
  • 我面临同样的问题。此处发布的解决方案对我不起作用。您有任何解决方案吗?
  • 我遇到了类似的错误并找到了问题并修复了它。你可能犯了类似的错误。 stackoverflow.com/questions/63133657/…

标签: android kotlin gradle android-room


【解决方案1】:

验证您的 DAO,确保一切都在其应有的位置。 4/5 当我收到这个错误时,我发现我在 dao 的某个地方写错了/忘记了一些东西

【讨论】:

    【解决方案2】:

    当我尝试从 db 中检索具有 LiveData 数组列表(Dao 文件)返回类型的所有列时,我遇到了同样的错误,例如:返回类型是 -

    LiveData<ArrayList<Book>>
    

    当我将 ArrayList 更改为这样的列表时:LiveData&lt;List&lt;Book&gt;&gt;

    虽然我不确定错误的原因或原因, 以上更改对我有用

    还有,

    如果你使用协程,检查房间依赖 for room-ktx

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 感谢@Eric 提供了理解核心问题的正确方法。
      【解决方案4】:

      我收到了一个错误,因为我没有提到我的 DAO() 类

      @Database(entities = [Products::class], version = 1, exportSchema = false) 抽象类 LocalDatabase : RoomDatabase(){

      abstract fun productDao(): ProductDao() // I missed this line
      
      
      companion object{
      
          @Volatile
          private var INSTANCE :LocalDatabase ?=null
      
          fun getDatabase(context: Context):LocalDatabase{
      
              val tempInstance = INSTANCE
              if (tempInstance != null)
                  return tempInstance
      
              synchronized(this) {
                  val instance = Room.databaseBuilder(
                      context.applicationContext,
                      LocalDatabase::class.java,
                      "Zenex"
                  ).build()
                  INSTANCE = instance
                  return instance
              }
          }
      }
      
      
      
      
      
      override fun createOpenHelper(config: DatabaseConfiguration?): SupportSQLiteOpenHelper {
      
          TODO("Not yet implemented")
      
      }
      
      override fun createInvalidationTracker(): InvalidationTracker {
          TODO("Not yet implemented")
      }
      
      override fun clearAllTables() {
      
      }
      

      }

      【讨论】:

        【解决方案5】:

        如果您的 Kotlin 项目中有 Hilt,请确保您已注释您的模块类:

        @Module
        @InstallIn(SingletonComponent::class)
        

        【讨论】:

        • 你能帮帮我吗..我正在使用我的 java andorid 的刀柄并得到以下异常java.lang.reflect.InvocationTargetException (no error message) ..请帮助我
        【解决方案6】:

        错误由您项目中的kapt 显示,要显示完整的错误消息,您必须将它们添加到您的gradle.properties 文件中。

        kapt.use.worker.api=false
        kapt.incremental.apt=false
        

        之后再次运行您的应用,并尝试从详细错误中读取。

        【讨论】:

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