我在 Kapt Debug Kotlin 中遇到错误。我在 gradle 文件中更新了依赖项的版本。仍然面临这个问题
Posted
技术标签:
【中文标题】我在 Kapt Debug Kotlin 中遇到错误。我在 gradle 文件中更新了依赖项的版本。仍然面临这个问题【英文标题】:I am getting an error in Kapt Debug Kotlin. I have update versions of dependencies in gradle file. still facing this issue 【发布时间】:2021-12-31 19:56:33 【问题描述】:我的应用程序运行顺利,但我现在收到此错误。。如何解决?我在某处看到了您的房间数据库、dao 和数据类。仍然无法弄清楚是什么问题。
错误显示此文件 房间数据库
@Database(entities = [Transaction::class], version = 1, exportSchema = false)
abstract class MoneyDatabase : RoomDatabase()
abstract fun transactionListDao():transactionDetailDao
companion object
// Singleton prevents multiple instances of database opening at the
// same time.
@Volatile
private var INSTANCE: MoneyDatabase? = null
fun getDatabase(context: Context): MoneyDatabase
// if the INSTANCE is not null, then return it,
// if it is, then create the database
return INSTANCE ?: synchronized(this)
val instance = Room.databaseBuilder(
context.applicationContext,
MoneyDatabase::class.java,
"transaction_database"
).build()
INSTANCE = instance
// return instance
instance
DAO
@Dao
interface transactionDetailDao
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(transaction : Transaction)
@Delete
suspend fun delete(transaction : Transaction)
@Update
suspend fun update(transaction: Transaction)
@Query("SELECT * FROM transaction_table ORDER BY id ASC")
fun getalltransaction(): LiveData<List<Transaction>>
数据类
enum class Transaction_type()
Cash , debit , Credit
enum class Type()
Income, Expense
@Entity(tableName = "transaction_table")
data class Transaction(
val name : String,
val amount : Float,
val day : Int,
val month : Int,
val year : Int,
val comment: String,
val datePicker: String,
val transaction_type : String,
val category : String,
val recurring_from : String,
val recurring_to : String
)
@PrimaryKey(autoGenerate = true) var id :Long=0
【问题讨论】:
【参考方案1】:错误已解决。我使用的是 kotlin 版本 1.6.0。我将其减少到 1.4.32。据我了解,上述(最新)版本的 Kotlin 以及 Room 和协程都不能很好地工作。
【讨论】:
【参考方案2】:我认为您的问题是由于无意中使用了不正确的类,一个可能的罪魁祸首是 Transaction 因为它也是一个 Room 类
也许在 transactionDetailDao 中(虽然它可能在其他地方)
看看你有没有import androidx.room.Transaction
? (或任何其他带有 Transaction 的导入)?
如果是这样,删除或注释掉导入
以和为例:-
并且将导入注释掉:-
从 github 导入,有一个播放问题,肯定是协程。注释掉了 Dao 中的暂停:-
@Dao
interface transactionDetailDao
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insert(transaction : Transaction)
@Delete
suspend fun delete(transaction : Transaction)
@Update
suspend fun update(transaction: Transaction)
@Query("SELECT * FROM transaction_table ORDER BY id ASC")
fun getalltransaction(): LiveData<List<Transaction>>
编译成功并运行并进行了播放,例如:-
【讨论】:
以上是关于我在 Kapt Debug Kotlin 中遇到错误。我在 gradle 文件中更新了依赖项的版本。仍然面临这个问题的主要内容,如果未能解决你的问题,请参考以下文章
带有 Java 和 Kotlin 文件、kapt 或 annotationProcessor 的 Android 项目?