
我正在尝试谷歌Android架构组件的新房间ORM,我按照文档,但当我运行我的代码时,我得到java.lang.RuntimeException:找不到com.zeyad.usecases.app.UserDatabase的实现. UserDatabase_Impl不存在
这是我的代码:
Gradle项目:
allprojects {repositorIEs { jcenter() maven { url 'https://jitpack.io' } maven { url 'https://maven.Google.com' }}}Gradle模块:
compile "androID.arch.lifecycle:runtime:1.0.0-Alpha1"compile "androID.arch.lifecycle:extensions:1.0.0-Alpha1"annotationProcessor "androID.arch.lifecycle:compiler:1.0.0-Alpha1"compile "androID.arch.persistence.room:runtime:1.0.0-Alpha1"annotationProcessor "androID.arch.persistence.room:compiler:1.0.0-Alpha1"用户:
@Entity(tablename = "User")public class User { static final String LOGIN = "login"; private static final String ID = "ID", AVATAR_URL = "avatar_url"; @PrimaryKey @Serializedname(LOGIN) @ColumnInfo(name = LOGIN) String login; @Serializedname(ID) @ColumnInfo(name = ID) int ID; @Serializedname(AVATAR_URL) @ColumnInfo(name = AVATAR_URL) String avatarUrl; public User() { } public User(String login, int ID, String avatarUrl) { this.login = login; this.ID = ID; this.avatarUrl = avatarUrl; } public static boolean isEmpty(User user) { return user == null || (user.login == null && user.avatarUrl == null); } public String getLogin() { return login; } public voID setLogin(String login) { this.login = login; } public int getID() { return ID; } public voID setID(int ID) { this.ID = ID; } public String getAvatarUrl() { return avatarUrl; } public voID setAvatarUrl(String avatarUrl) { this.avatarUrl = avatarUrl; } @OverrIDe public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return ID == user.ID && (login != null ? login.equals(user.login) : user.login == null && (avatarUrl != null ? avatarUrl.equals(user.avatarUrl) : user.avatarUrl == null)); } @OverrIDe public int hashCode() { int result = login != null ? login.hashCode() : 0; result = 31 * result + ID; result = 31 * result + (avatarUrl != null ? avatarUrl.hashCode() : 0); return result; }}UserDatabase:
@Database(entitIEs = {User.class}, version = 1)public abstract class UserDatabase extends RoomDatabase { public abstract RoomBaseDao roomBaseDao();}RoomBaseDao:
@Daopublic interface RoomBaseDao { @Insert(onConflict = OnConflictStrategy.REPLACE) voID insertItemsReplace(User... objects); @Update(onConflict = OnConflictStrategy.REPLACE) voID updateItemsReplace(User... objects); @Delete voID deleteItem(User object);}应用onCreate:
UserDatabase gDb = Room.databaseBuilder(this, UserDatabase.class, "test-db").build(); // throws the exception above提前致谢.
解决方法:
在我的情况下,我使用旧版本的ButterKnife,它需要androID-apt插件.所以我更新了ButterKnife(现在使用注释处理器)并删除了Gradle文件中的插件声明.
可能这不是你的问题,但也许它会帮助别人.
总结以上是内存溢出为你收集整理的java – 没有实现Room DataBase全部内容,希望文章能够帮你解决java – 没有实现Room DataBase所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)