Kapt 异常 (KaptExecution)
Kapt exception (KaptExecution)
我正在努力为我用 Kotlin 编写的项目增加空间,但我总是遇到此错误。
用户数据class
@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?
)
UserDao
@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
}
}
}
}
然后当我构建它时,我得到了这个错误:
失败:构建失败,出现异常。
What went wrong:
2021-02-14T16:35:38.826+0300 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
Execution failed for task ':app:kaptDebugKotlin'.
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
java.lang.reflect.InvocationTargetException (no error message)
我在 github.
编写和下载的每个代码中都遇到了这个错误
我尝试了这些链接中的解决方案:
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,同样的事情发生了
@插入
有趣的 insertUser(用户:用户)
将此更改为
@插入
暂停乐趣 insertUser(用户:用户)
插入不应在 UI 线程上完成。这就是这个错误的可能原因。
对我来说,问题是带有 ApplicationComponent::class 的 @Installin 注释
我只是将其更改为 SingletonComponent::class
之前:
@InstallIn(ApplicationComponent::class)
之后:
@InstallIn(SingletonComponent::class)
还从我的模块中的函数中删除了@Singleton 注释class
在您的 viewModel class 中,您应该像这样注入构造函数:
class MainViewModel @Inject constructor (
私有 val 存储库:存储库,
@ApplicationContext 应用:MyApplication
):AndroidViewModel(应用程序)
并在您的 activity 或片段中像这样初始化您的视图模型:
val mainViewModel: MainViewModel by viewModels()
是因为 android studio ide 和 kotlin 版本。所以,当我更新下一个版本或降级到其他版本时,问题就解决了
我正在努力为我用 Kotlin 编写的项目增加空间,但我总是遇到此错误。
用户数据class
@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?
)
UserDao
@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
}
}
}
}
然后当我构建它时,我得到了这个错误:
失败:构建失败,出现异常。
What went wrong:
2021-02-14T16:35:38.826+0300 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
Execution failed for task ':app:kaptDebugKotlin'.
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InvocationTargetException (no error message)
我在 github.
编写和下载的每个代码中都遇到了这个错误我尝试了这些链接中的解决方案:
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,同样的事情发生了
@插入 有趣的 insertUser(用户:用户)
将此更改为
@插入 暂停乐趣 insertUser(用户:用户)
插入不应在 UI 线程上完成。这就是这个错误的可能原因。
对我来说,问题是带有 ApplicationComponent::class 的 @Installin 注释 我只是将其更改为 SingletonComponent::class
之前:
@InstallIn(ApplicationComponent::class)
之后: @InstallIn(SingletonComponent::class)
还从我的模块中的函数中删除了@Singleton 注释class
在您的 viewModel class 中,您应该像这样注入构造函数:
class MainViewModel @Inject constructor ( 私有 val 存储库:存储库, @ApplicationContext 应用:MyApplication ):AndroidViewModel(应用程序)
并在您的 activity 或片段中像这样初始化您的视图模型:
val mainViewModel: MainViewModel by viewModels()
是因为 android studio ide 和 kotlin 版本。所以,当我更新下一个版本或降级到其他版本时,问题就解决了