28

I am getting following error while running application

java.lang.RuntimeException: cannot find implementation for com.abc.db.abdDB. abcDB_Impl does not exist

My build.gradle has following configuration:

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"

My Database class:

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
    }

Does anyone try to use androidX API? Can someone help to find solution for this?

  • See a [possible answer here in this post](https://stackoverflow.com/questions/47274677/room-cannot-find-implementation/53669919#53669919): – Ráfagan Dec 07 '18 at 19:09

2 Answers2

63

If you use Kotlin, then you have to use kapt instead of annotationProcessor, and must also apply kotlin-kapt plugin.

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"
EpicPandaForce
  • 75,743
  • 26
  • 240
  • 404
  • 5
    thanks - adding `kotlin-kapt` worked for me (I had already put `kapt` on the dependencies), but isn't it weird that the build process wouldn't flag up that there isn't a plugin to handle the `kapt` statements – kassim Aug 05 '18 at 13:37
  • 3
    Thanks bro! You save my day! – Abner Escócio Feb 27 '19 at 17:20
0

For Java

in app build.gradle

use

implementation 'android.arch.persistence.room:runtime:1.1.1'
annotationProcessor 'android.arch.persistence.room:compiler:1.1.1'
fmag
  • 111
  • 1
  • 6
  • 2
    This information is very old and outdated. – Bink Jan 22 '21 at 22:57
  • 2
    @Bink since you didn't bother on suggesting an improvement, I can do it for you. What you should do is use the following instead of the above: `implementation "androidx.room:room-runtime:$room_version"` `annotationProcessor "androidx.room:room-compiler:$room_version"` $room_version is dependent on latest version released by Google – user3170251 Mar 22 '21 at 20:23