【问题标题】:Kapt exception (KaptExecution)Kapt 异常 (KaptExecution)
【发布时间】:2021-05-17 15:19:23
【问题描述】:

我正在努力为我用 Kotlin 编写的项目增加空间,但我总是遇到这个错误。

用户数据类

@Entity 
data class Users(

@PrimaryKey
val id: String? = "",

@ColumnInfo(name = "userFullName")
val name: String?,

@ColumnInfo(name = "userEmail")
val email: String?,
@ColumnInfo(name = "userPassword")
val password: String?,
@ColumnInfo(name = "userBDay", defaultValue = "")
val birthday: String?
)

用户道

@Dao interface UserDao {

@Insert
fun insertUser(user: Users)

@Delete
suspend fun deleteUser(user: Users)

@Query("SELECT * FROM users")
fun getAllUsers(): List<Users>
}

用户数据库

@Database(entities = [Users::class], version = 1)
abstract class UserDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao

    companion object {
        @Volatile
        private var instance: UserDatabase? = null

        fun getUserDatabase(context: Context): UserDatabase {

            return instance ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    UserDatabase::class.java,
                    "usersDB"
                ).build()

                this.instance = instance
                instance
            }
        }
    }
}

然后当我构建它时,我得到了这个错误:

FAILURE:构建失败并出现异常。

出了什么问题:

2021-02-14T16:35:38.826+0300 [错误] [org.gradle.internal.buildevents.BuildExceptionReporter]

任务 ':app:kaptDebugKotlin' 执行失败。

执行 org.jetbrains.kotlin.gradle.internal.KaptExecution 时发生故障 java.lang.reflect.InvocationTargetException(没有错误信息)

我在从 github 编写和下载的每个代码中都遇到了这个错误。

我在这些链接中尝试了解决方案:

Repeated Build fails "To use Coroutine features, you must add `ktx`......."

How to get rid of Incremental annotation processing requested warning?

Error:Execution failed for task ':app:compileDebugKotlin'. > Compilation error. See log for more details

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

A failure occurred while executing com.android.build.gradle.internal.tasks

我还以为是AS引起的,我下载了其他版本的AS,也出现了同样的情况

【问题讨论】:

  • 您能否发布带有数据库的模块的 gradle 配置,以及完整的错误(如果有)?

标签: android kotlin android-room kapt


【解决方案1】:

这是因为 android studio ide 和 kotlin 版本。所以,当我更新下一个版本或降级到其他版本时,问题就解决了

【讨论】:

    【解决方案2】:

    @插入 有趣的插入用户(用户:用户)

    改成

    @插入 暂停乐趣 insertUser(user: Users)

    不应在 UI 线程上进行插入。这就是这个错误的可能原因。

    【讨论】:

    • 您是否也尝试按照以下建议检查确切的错误:stackoverflow.com/questions/62131564/…
    • 从命令行运行:./gradlew assembleDebug --stacktrace
    • 嘿。谢谢,我已经尝试过了,但没有解决我的问题。
    • 请您分享运行上述命令后得到的 --stacktrace 输出吗?
    • 有点长,所以在这里justpaste.it/2e8kg
    【解决方案3】:

    对我来说,问题是带有 ApplicationComponent::class 的 @Installin 注释 我只是把它改成 SingletonComponent::class

    之前:

    @InstallIn(ApplicationComponent::class)

    之后: @InstallIn(SingletonComponent::class)

    还从我的模块类中的函数中删除了@Singleton 注释

    在您的 viewModel 类中,您应该像这样注入构造函数:

    class MainViewModel @Inject 构造函数( 私有 val 存储库:存储库, @ApplicationContext 应用程序:MyApplication ):AndroidViewModel(应用程序)

    并在您的活动或片段中初始化您的视图模型,如下所示:

    val mainViewModel: MainViewModel by viewModels()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      相关资源
      最近更新 更多