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

    }   

}

当前回答

在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"

其他回答

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

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

而不是这样:

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

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

apply plugin: 'kotlin-kapt'

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

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

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

对于那些使用Kotlin的人,尝试在应用程序build.gradle中将annotationProcessor更改为kapt

例如:

// 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'

到应用程序级别构建的顶部。Gradle文件,并做一个清洁和重建(根据https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#6)

在Android Studio中,如果在粘贴代码或构建过程中出现错误,请选择“构建>清洁项目”。然后选择Build > Rebuild Project,然后再次构建。


更新

如果您已经迁移到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"

针对Kotlin开发人员

用这个:

implementation "android.arch.persistence.room:runtime:1.0.0"
kapt "android.arch.persistence.room:compiler:1.0.0"

并添加apply plugin: 'kotlin-kapt'到应用级别build.gradle的顶部。

Java开发人员须知

implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"

以上答案都不起作用,我注意到当我使用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"