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

    }   

}

当前回答

只使用

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'

其他回答

针对Kotlin开发人员


如果你检查了Dao和Entity,也使用了Kapt,没有问题,我猜如果你使用kotlin 1.4及以上版本,你的kotlin版本有问题。 从这个链接更新房间到最新版本。


2.3.0-alpha03解决了我的问题。

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

对于Kotlin,使用kapt代替annotationProcessor

所以,与其

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

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

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

阅读下面的例子: 房间里的例子

我只是使用正确的(我猜是)annotationProcessorFile修正了这个错误,如下所示:

annotationProcessor "android.arch.persistence.room:compiler:<latest_version>"

此外,我在房间版本升级到2.2.0,就像在生命周期版本一样。

一旦同步了摇篮,我就可以开始使用房间了。

所以,祝你好运!让代码与你同在!

这不仅仅是更新你的依赖关系。确保所有的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

我遇到了这个问题,因为我忘记了适当的依赖关系

implementation "android.arch.lifecycle:extensions:$archLifecycleVersion"
implementation "android.arch.persistence.room:runtime:$archRoomVersion"
annotationProcessor "android.arch.lifecycle:compiler:$archLifecycleVersion"
annotationProcessor "android.arch.persistence.room:compiler:$archRoomVersion"

在添加了annotationProcessor并重新构建之后,问题就解决了。