我的app数据库类

@Database(entities = {Detail.class}, version = Constant.DATABASE_VERSION)
public abstract class AppDatabase extends RoomDatabase {

    private static AppDatabase INSTANCE;

    public abstract FavoritesDao favoritesDao();

    public static AppDatabase getAppDatabase(Context context) {
        if (INSTANCE == null) {
            INSTANCE =
                    Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, Constant.DATABASE).allowMainThreadQueries().build();

                    //Room.inMemoryDatabaseBuilder(context.getApplicationContext(),AppDatabase.class).allowMainThreadQueries().build();
        }
        return INSTANCE;
    }

    public static void destroyInstance() {
        INSTANCE = null;
    }
}

Gradle自由:

 compile "android.arch.persistence.room:runtime:+"   
 annotationProcessor "android.arch.persistence.room:compiler:+"

当我请求实例时,它会给出这个错误,AppDatabase_Impl不存在 在我的应用课上

public class APp extends Application {

    private boolean appRunning = false;

    @Override
    public void onCreate() {
        super.onCreate();
        AppDatabase.getAppDatabase(this); //--AppDatabase_Impl does not exist

    }   

}

当前回答

确保在build.gradle中为room添加正确的依赖项

ext {
   roomVersion = '2.1.0-alpha06'
}

// Room components
implementation "androidx.room:room-runtime:$rootProject.roomVersion"
implementation "androidx.room:room-ktx:$rootProject.roomVersion"
kapt "androidx.room:room-compiler:$rootProject.roomVersion"
androidTestImplementation "androidx.room:room-testing:$rootProject.roomVersion"

在上面这条线下面

apply plugin: 'kotlin-kapt'

其他回答

在2023年1月,我在重构我的代码以使用ServiceLocator类后遇到了类似的问题。

为了解决这个问题,我在更衣室里玩了很多次。它适用于2.5.0-alpha02

Version_room = "2.5.0-alpha02" <——build。gradle(项目)

 //Room
implementation "androidx.room:room-runtime:$version_room"
kapt "androidx.room:room-compiler:$version_room"
// optional - Kotlin Extensions and Coroutines support for Room
implementation "androidx.room:room-ktx:$version_room"
implementation("androidx.room:room-guava:$version_room")

我在Android Eel 2020.1.1上运行以下程序:

Version_kotlin = "1.7.21" Version_android_gradle_plugin = "4.0.1"

在我的例子中,我正在测试房间数据库的连接性,我已经把测试类放在我在AndroidTest文件夹中创建的目录中。我把它移出了自定义目录,然后它工作得很好。

只使用

apply plugin: 'kotlin-kapt'

在app build。gradle中

保持两者的依赖关系

annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
kapt "android.arch.persistence.room:compiler:$rootProject.roomVersion"

EDIT

在更新的版本中,不需要同时添加两个依赖项 就用吧,希望能管用。

kapt 'android.arch.persistence.room:compiler:1.1.1'

这不仅仅是更新你的依赖关系。确保所有的Room依赖项都有相同的版本。

implementation 'android.arch.persistence.room:rxjava2:1.1.0-alpha2'
implementation 'android.arch.persistence.room:runtime:1.1.0-alpha2'
annotationProcessor "android.arch.persistence.room:compiler:1.1.0-alpha2"

在上面的示例代码片段中,我的所有Room依赖项都具有相同的版本1.1.0-alpha2

我错过的时候出现了这个错误

@Database(entity="{<model.class>})

确保上面注释中指定的实体模型引用特定的模型类,并确保必要的注释:

@Entity(tableName = "<table_name>" ...)

是正确定义的,你会很好吗