java - Android房间持久化: AppDatabase_Impl does not exist

标签 java android android-room

我的应用数据库类

@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

    }   

}

最佳答案

对于那些使用 Kotlin 的人,请尝试在应用程序 build.gradleannotationProcessor 更改为 kapt p>

例如:

// Extensions = ViewModel + LiveData
implementation "android.arch.lifecycle:extensions:1.1.0"
kapt "android.arch.lifecycle:compiler:1.1.0"
// Room
implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"

还记得添加这个插件

apply plugin: 'kotlin-kapt'

到应用程序级 build.gradle 文件的顶部并进行清理和重建(根据 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6)

In Android Studio, if you get errors when you paste code or during the build process, select Build >Clean Project. Then select Build > Rebuild Project, and then build again.


更新

如果你已经迁移到 androidx

def room_version = "2.3.0" // check latest version from docs

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

更新 2(自 2021 年 7 月起)

def room_version = "2.3.0" // check latest version from docs

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

关于java - Android房间持久化: AppDatabase_Impl does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665621/

相关文章:

java - 从包含多个对象的序列化文件中读取数据

java - Spring事务隔离不起作用

android - 没有发现重力左侧的抽屉 View

java - 无法将数据从房间数据库获取到 Spinner

java - 带有 xml 或 json 作为参数的 restful webservice

java - 自定义标记器 solr 仅在第一次调用

android - 将内容 URI 与 ACTION_VIDEO_CAPTURE 结合使用

java - android通知remoteview不显示

Android Room 迁移没有正确处理(错误的列顺序)

java - 安卓房间 "bad RuntimeInvisibleParameterAnnotations attribute"