Law

Room Implementation using version catalogs

I encountered this error, after going through the Room tutorial. It seems, there are a lot of gradle plugins needed to make it work.

FATAL EXCEPTION: main                                                                                                 
Process: ph.onlinejobs.OnlineJobs, PID: 3602 java.lang.RuntimeException: Cannot find implementation for ph.onlinejobs.onlinejobs.database.OnlineJobsDatabase. OnlineJobsDatabase_Impl does not exist at androidx.room.Room.getGeneratedImplementation(Room.kt:58) at androidx.room.RoomDatabase$Builder.build(RoomDatabase.kt:1351)

My initial libs.versions.toml looks like the one below

[versions]
room = "2.6.1"

[libraries]
room = { module = "androidx.room:room-runtime", version.ref = "room" }

and my module-level gradle file

dependencies {
	implementation(libs.room)
}

KSP Plugin

Since I am using Kotlin, I need to install KSP Plugin

[versions]
ksp = "2.1.10-1.0.31"

[plugins]
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

Top-level build.gradle.kts

plugins {
	alias(libs.plugins.ksp) apply false
}

Module-level build.gradle.kts

plugins {
	id(libs.plugins.ksp.get().pluginId)
}

Add missing plugins

[libraries]
room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }

Then, the build.gradle.kts should look like

implementation(libs.room)
implementation(libs.room.ktx)
ksp(libs.room.compiler)

Then it should now fixed the runtime error.