Room + 找不到实现 DB + DB_Impl 不存在
Posted
技术标签:
【中文标题】Room + 找不到实现 DB + DB_Impl 不存在【英文标题】:Room + cannot find implementation DB + DB_Impl does not exist 【发布时间】:2018-10-31 09:41:40 【问题描述】:运行应用程序时出现以下错误
java.lang.RuntimeException: cannot find implementation for com.abc.db.abdDB. abcDB_Impl does not exist
我的 build.gradle 有以下配置:
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1"
implementation "androidx.room:room-runtime:2.0.0-alpha1"
annotationProcessor "androidx.room:room-compiler:2.0.0-alpha1"
我的数据库类:
fun getDatabase(context: Context): abcDB?
if (dbInstance == null)
synchronized(abcDB::class.java)
if (dbInstance == null)
dbInstance = Room.databaseBuilder(context.applicationContext,
abcDB::class.java, "abc_db")
.fallbackToDestructiveMigration()
.addCallback(sRoomDatabaseCallback)
.build()
return dbInstance
有人尝试使用 androidX API 吗?有人可以帮助找到解决方案吗?
【问题讨论】:
查看possible answer here in this post: 【参考方案1】:如果你使用 Kotlin,那么你必须使用 kapt
而不是 annotationProcessor
,并且还必须应用 kotlin-kapt
插件。
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
dependencies
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1"
kapt "androidx.lifecycle:lifecycle-compiler:2.0.0-alpha1"
implementation "androidx.room:room-runtime:2.0.0-alpha1"
kapt "androidx.room:room-compiler:2.0.0-alpha1"
【讨论】:
谢谢 - 添加kotlin-kapt
对我有用(我已经将 kapt
放在依赖项上),但是构建过程不会标记没有处理kapt
语句的插件
谢谢兄弟!你拯救了我的一天!【参考方案2】:
Java
在应用程序 build.gradle 中
使用
implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
【讨论】:
此信息非常陈旧且过时。 @Bink 既然你没有费心提出改进建议,我可以为你做。你应该做的是使用以下而不是上面的:implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
$room_version 取决于 Google 发布的最新版本以上是关于Room + 找不到实现 DB + DB_Impl 不存在的主要内容,如果未能解决你的问题,请参考以下文章
java.io.FileNotFoundException:找不到资源:Java QuickStart for Clas-s-room API 上的 /credentials.json