我的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

    }   

}

当前回答

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

其他回答

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

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

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

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

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

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

在我的kotlin应用程序中,我只是在我的构建顶部添加了以下一行。Gradle文件:

apply plugin: 'kotlin-kapt'

以及依赖项部分的下面一行:

kapt "androidx.room:room-compiler:2.2.5"

我希望它能解决你的问题。

在OP的情况下不是这样,但是当你错误地使用implementation而不是annotationProcessor时也会发生这种情况,就像这样:

implementation "android.arch.persistence.room:compiler:x.x.x"

而不是这样:

annotationProcessor "android.arch.persistence.room:compiler:x.x.x"

这个问题已经很老了,但我今天无意中发现了这个问题,提供的答案没有一个能帮到我。最后,我通过注意到谷歌文档实际上仍然采用Java而不是Kotlin默认解决了这个问题,实际上他们添加了一个我忽略的注释

对于Kotlin,使用kapt代替annotationProcessor

所以,与其

annotationProcessor“androidx.room: room-compiler: room_version美元”

如果你使用Kotlin开发,你应该使用:

    kapt "androidx.room:room-compiler:$room_version"