我正在使用Room编写我的第一个应用程序。我发现当它使用kotlin时会出现问题,甚至一些示例在我的计算机上也无法正常工作,所以我回滚到了纯Java。
FilmsDatabaseJ db = Room.databaseBuilder(getApplicationContext(), FilmsDatabase.class, "DATABASE_NAME").build();
这个调用会抛出异常:
java.lang.RuntimeException: cannot find implementation for com.home.myapplication.films.storage.FilmsDatabase. FilmsDatabase_Impl does not exist
我查看了源代码,Room 期望已经有这样的类(是否在某处生成?),但由于某些原因,在我的情况下该类并不存在,而我的情况与文档所述并无太大差异。您能否分享一下您的想法,可能出了什么问题呢?
@TypeConverters({Converters.class})
@Database(entities = {Film.class, User.class, UserFilms.class}, version = 1)
public abstract class FilmsDatabaseJ extends RoomDatabase {
private static final String DATABASE_NAME = "DATABASE_NAME";
private static FilmsDatabaseJ instance;
public abstract FilmsDaoJ getFilmsDao();
@NotNull
public static FilmsDatabaseJ getInstance(Context context) {
if (instance == null) {
synchronized (FilmsDatabaseJ.class) {
if (instance != null) return
instance = Room.databaseBuilder(context, FilmsDatabaseJ.class, DATABASE_NAME).build();
}
}
return instance;
}
}
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
// Room (use 1.1.0-beta2 for latest beta)
implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
build.gradle
的dependencies
闭包中添加了注解处理器吗?请参阅 https://developer.android.com/topic/libraries/architecture/adding-components.html。 - CommonsWare@Entity
类或任何在@Dao
类上的方法返回的POJO有关。 - CommonsWareapp/
)生成代码,路径为build/generated/source/apt/debug/com/home/myapplication/films/storage/impl/
。那里有任何显示吗? - CommonsWare