当前位置: 首页 > 知识库问答 >
问题:

尝试在Roomdb中使用Hilt时未找到AndroidX.Room.RoomDatabase的类文件

彭烨烁
2023-03-14

这是我得到的错误消息。我检查了网站,我有需要的每一个依赖项,我正确地设置了一切。问题是,我已经有这个设置在另一个项目,这是工作很好,出于某种原因,它不在这里工作。我尝试过使缓存失效、重新启动等等,但没有任何结果。我非常困惑是什么导致了这一切。

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) { ... 

共有1个答案

陶寒
2023-03-14

您是否尝试过Build>Clean Project和Build>Rebuild Project,并使用@primarykey(autoGenerate=true)val id:Long,而不是@primarykey(autoGenerate=true)val id:Long?=null,作为主键将自动生成。参见房间数据库

 类似资料:
  • 当我试图返回带有类型化java的Uni时。util。在Quarkus的开发模式下,我得到一个ClassNotFound异常。我读过Quarkus在不同的配置文件中使用不同的类装入器,但我看不出我做了什么花哨的事情。 这是发信人 这是消费者 我想退货的豆子只是一个POJO 和错误信息 如果我运行dev概要文件或者运行打包的fast jar,我会得到相同的结果。 乐意接受任何能指引我正确方向的提示

  • 所以我昨天写了同样的问题,但由于缺乏细节,它被关闭了。我只是想通过终端运行我的主类。我的代码: 我的类路径:C:\Users\48790\IdeaProjects\workingWithCommand\src,在C:\Users\48790\IdeaProjects\workingWithCommand的终端目录中 我已经尝试过:-cp C:\用户\48790\IdeaProjects\worki

  • 我试图在while循环中为“未找到文件”异常编写代码,以便程序继续提示用户输入文件(test.txt)。我在while循环中编写了一个try/catch块。但是,当我删除输入文件(test.txt)时,程序应捕获此错误并打印“error,找不到'test.txt'文件,请重试:”并允许用户输入另一个文件名。然而,该程序崩溃,并给我一个FileNotFoundException。

  • 目前,我正在使用头盔和地形在GCP上部署我的詹金斯。这是我的地形代码: 但当我尝试在管道上运行docker命令时,我得到了以下错误: [vision_front_new_master-pth4udtqvsas7vicpco2ufhiem6b37lqylejt5bmat36ayx77ka]运行shell脚本 docker拉节点:碳 /home/jenkins/workspace/vision\u f

  • 当用户触摸AlertDialog中的OK按钮时,我一直试图让我的应用程序返回到主活动。 我显示的警报对话框基本上是一条错误消息,用于通知用户没有找到他们选择并在不是主要活动的活动中调用的特定日期的数据,但我希望他们在单击确定时将其发送回主要活动。 调用运行良好,只是它似乎不知道如何找到主要活动,即使我使用的调用在任何正常活动中都有效。 我得到的错误是: 特定AlertDialog代码为:

  • 我想在scss文件的短地址使用角的样式。 我使用的造型是这样的: 我在文件夹中创建了一个文件夹,并将样式放在上面: 然后转到并添加以下内容: 我需要在中使用它,如下所示: 但它显示了这个错误: >./src/styles.scss中出错(./node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-cs