android - 尝试将 Hilt 与 Roomdb 结合使用时,找不到 androidx.room.RoomDatabase 的类文件
问题描述
这是我收到的错误消息。我检查了网络,我有所有需要的依赖项,我正确设置了一切。问题是我已经在另一个工作正常的项目上进行了这个设置,但由于某种原因它在这里不起作用。我尝试使缓存无效,重新启动等,但没有任何结果。我对造成这种情况的原因感到非常困惑。
error: cannot access RoomDatabase
return DatabaseModule_ProvideAppRepositoryFactory.provideAppRepository(databaseModule, appDatabase(), ApplicationContextModule_ProvideContextFactory.provideContext(applicationContextModule));
^
class file for androidx.room.RoomDatabase not found
1 error
这是数据库模块
@Module
@InstallIn(SingletonComponent::class)
class DatabaseModule {
@Provides
@Singleton
fun provideAppDatabase(@ApplicationContext context: Context): AppDatabase {
return Room.databaseBuilder(
context,
AppDatabase::class.java, "app-db"
).build()
}
@Provides
fun provideAppRepository(
db: AppDatabase,
@ApplicationContext ctx : Context
): AppRepository {
return AppRepository(db, ctx)
}
这些是我与 Kotlin Kapt 一起的依赖项
Plugins{
id(GradlePluginId.ANDROID_LIBRARY)
id(GradlePluginId.KOTLIN_ANDROID)
id(GradlePluginId.KOTLIN_KAPT)
id(GradlePluginId.HILT_ANDROID)
}
...
implementation(LibraryDependency.ROOM)
implementation(LibraryDependency.ROOM_KTX)
kapt(LibraryDependency.ROOM_COMPILER)
Which is this 2.2.6 version, but i've been using the "2.3.0-beta02" as well
const val ROOM = "androidx.room:room-runtime:${LibraryVersion.ROOM}"
const val ROOM_COMPILER = "androidx.room:room-compiler:${LibraryVersion.ROOM}"
const val ROOM_KTX = "androidx.room:room-ktx:${LibraryVersion.ROOM}"
@Database(entities = [CBImageDataModel::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun imageDao(): ImageDao
}
@Entity(tableName = "images")
@TypeConverters(ImageTypeConverters::class)
data class CBImageDataModel(
@PrimaryKey(autoGenerate = true) val id: Long? = null,
@ColumnInfo(name = "server_id") val serverID: Int
)
class AppRepository @Inject constructor(private val db: AppDatabase, private val context: Context) { ...
解决方案
将上面列出的依赖项添加到我的应用程序的 Build gradle 中,而不仅仅是使用依赖项的模块...
build.gradle.kts(应用程序)
Plugins{
id(GradlePluginId.ANDROID_LIBRARY)
id(GradlePluginId.KOTLIN_ANDROID)
id(GradlePluginId.KOTLIN_KAPT)
id(GradlePluginId.HILT_ANDROID)
}
...
implementation(LibraryDependency.ROOM)
implementation(LibraryDependency.ROOM_KTX)
kapt(LibraryDependency.ROOM_COMPILER)
Which is this 2.2.6 version
const val ROOM = "androidx.room:room-runtime:${LibraryVersion.ROOM}"
const val ROOM_COMPILER = "androidx.room:room-compiler:${LibraryVersion.ROOM}"
const val ROOM_KTX = "androidx.room:room-ktx:${LibraryVersion.ROOM}"
```
推荐阅读
- javascript - 拒绝访问跨域对象上的属性“文档”的权限
- php - 如何去除水印?
- eclipse - 我可以使用哪些工具和日志来找出 Eclipse 中的服务器无法启动的原因
- java - 仅限公共访问约束的注释
- angular - 在ngrx Effect 中的switchmap(api call) 之后访问一个action payload
- sql - 如何组合2个表的部分数据?
- php - 根据配置数组选择方法
- javascript - 我可以在 React 头盔标签中使用 react-i18next 反式标签吗?
- reactjs - npx create-react-app 没有进一步进行并停止在“使用 cra-template 安装 react、react-dom 和 react-scripts
- python - 如果与搜索值匹配,如何点击搜索引擎结果