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

    }   

}

当前回答

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

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

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

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

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

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

其他回答

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

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并重新构建之后,问题就解决了。

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

为了防止其他人犯和我一样的错误,不要将数据库类称为“database”,否则您将得到相同的错误。

我也遇到了同样的现象。

implementation "android.arch.persistence.room:runtime:1.1.1"

添加会导致另一个构建错误,但会从日志中跟踪原因。

在我的例子中,SQL实现中有一个错误。 修复之后,构建是成功的。

因此,您可能希望检查整个房间库的实现,而不是查看崩溃的局部函数。

以上答案都不起作用,我注意到当我使用2.3.0或2.4.2版本的房间时,这个问题仍然存在。但是,当我应用它时,2.5.0-alpha01版本工作得很好。

build.gradle:应用程序

def roomVersion = '2.5.0-alpha01'
implementation "androidx.room:room-ktx:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
testImplementation "android.arch.persistence.room:testing:$roomVersion"