当我试图构建我的应用程序时,我遇到了以下编译错误:
Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
com.example.persistence.AppDatabase, unresolved supertypes: androidx.room.RoomDatabase
持久性模块在Android设置中是独立的。
建筑格拉德尔
// Kotlin StdLib
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// Room
implementation "androidx.room:room-runtime:$androidXRoom"
kapt "androidx.room:room-compiler:$androidXRoom"
implementation "androidx.room:room-rxjava2:$androidXRoom"
ext.androidXRoom=“2.1.0-alpha02”
我试着把kotlin版本,room版本,改回AndroidArch room,但没用。我还尝试了清理项目和使Android Studio的缓存失效。但它不起作用。
编辑:AppDatabase源
package com.example.persistence.db
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.example.persistence.post.PostDbDao
import com.example.persistence.post.PostDbEntity
@Database(entities = [PostDbEntity::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun favoritePostsDao(): PostDbDao
companion object {
var INSTANCE: AppDatabase? = null
fun getDatabase(context: Context): AppDatabase? {
if(INSTANCE == null) {
synchronized(AppDatabase::class) {
INSTANCE = Room.databaseBuilder(context.applicationContext, AppDatabase::class.java, "post_db").build()
}
}
return INSTANCE
}
fun destroy() {
INSTANCE = null
}
}
}
其他答案可以编译,但却没有为数据库/持久性函数提供单独的模块。
您不应该在持久化
模块之外公开文件室实体或文件室数据库。相反,您应该在persistence
模块中编写一个函数,将PostEntity
@实体映射到一个简单的Post
数据类中。
我在这里写了更详细的内容:https://jacquessmuts.github.io/post/modularization_room/
更改gradle依赖项,例如
REMOVE -> implementation "androidx.room:room-runtime:$androidXRoom"
REPLACE WITH -> api "androidx.room:room-runtime:$androidXRoom"
问题更可能在于您如何定义依赖项,RoomDatabase
是公共API的一部分,因为您的AppDatabase
扩展了它,并且您可能会在下游依赖项中使用该类。但是RoomDatabase
被声明为仅限实现的依赖项。这意味着该类在编译期间通常不适用于下游依赖项。
尝试将"androidx.room: room-runtime:$androidXRoom"
更改为api
配置,使其成为公共API的一部分。这可能会解决您遇到的错误。
错误:找不到符号类DataBindingComponent
错误:查询有问题:[SQLITE_ERROR]SQL错误或缺少数据库(没有这样的表:任务) 显示了这个错误,我怎么可能修复它? 我正在学习这个教程
并且我发现了基于数据库版本4的可能场景的迁移varargs。 我的问题是,假设我使用的是db v1的Room,当我的应用程序到达db v10时,我将不得不编写多少迁移方法? 在sqlite中,我们在中获得已安装应用程序的当前db版本,我们只需通过开关大小写而不使用break语句,以便满足所有db升级。
我是新来的和我试图我的得到一个从它。我试图这样做的它与这是id但问题是我不知道如何返回目标从。 这就是<代码>刀 这是Repository类
我目前正在开发一个基于文本的游戏,在游戏中,你可以在房间之间移动,并在所说的房间中拾取物品,直到你到达“老板”房间。到目前为止,我已将所有内容正确打印出来,并将其显示在房间中是否有物品、物品是什么以及您所在的房间中。 我目前的问题是,它不是根据用户输入来改变房间。例如,您从Sepulture开始。用户输入North会将您的位置带入兵营。然而,这并不能让我远离seculture。 我的代码如下: 感
我转换java代码到kotlin代码,我得到类型未解决的java类错误。 我的Java类是 已转换的Kotlin类 非常感谢。