Java 房间数据库未实现

Java 房间数据库未实现,java,android,android-room,Java,Android,Android Room,我正在试用Google Android架构组件中的新Room ORM,我遵循了文档,但当我运行代码时,我得到了java.lang.RuntimeException:找不到com.zeyad.usecases.app.UserDatabase的实现。用户数据库\u Impl不存在 这是我的密码: 格拉德尔项目: allprojects { repositories { jcenter() maven { url 'https://jitpack.io' } maven {

我正在试用Google Android架构组件中的新Room ORM,我遵循了文档,但当我运行代码时,我得到了
java.lang.RuntimeException:找不到com.zeyad.usecases.app.UserDatabase的实现。用户数据库\u Impl不存在

这是我的密码:

格拉德尔项目:

allprojects {
repositories {
    jcenter()
    maven { url 'https://jitpack.io' }
    maven { url 'https://maven.google.com' }
}
}
梯度模块:

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"
用户:

用户数据库:

@Database(entities = {User.class}, version = 1)
public abstract class UserDatabase extends RoomDatabase {
    public abstract RoomBaseDao roomBaseDao();
}
RoomBaseDao:

@Dao
public interface RoomBaseDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insertItemsReplace(User... objects);

    @Update(onConflict = OnConflictStrategy.REPLACE)
    void updateItemsReplace(User... objects);

    @Delete
    void deleteItem(User object);
}
创建应用程序时:

UserDatabase gDb = Room.databaseBuilder(this, UserDatabase.class, "test-db").build(); // throws the exception above

提前感谢。

在我的例子中,我使用的是旧版本的ButterKnife,它需要
android apt
插件。因此,我更新了ButterKnife(现在使用注释处理器)并删除了Gradle文件中的插件声明


可能这不完全是你的问题,但可能会帮助其他人。

另一个可能导致问题的原因:

configurations.all {
  resolutionStrategy {
    force "com.android.support:support-annotations:$SUPPORT_LIBRARY_VERSION"
  }
}

感觉代码没有按预期生成。您是否在
build.gradle
文件中包含了这两个依赖项?我用gradle dependenciesOK更新了这个问题,看起来不错。如果你进入你模块的
build/generated/source/
目录,你会看到
apt/debug/
目录中有你的
UserDatabase\u Impl.java
RoomBaseDao\u Impl.java
类(在适当的java包中)?我有这个目录,但它是空的,这是问题的症结所在。假设清理和重建项目没有帮助,请检查Gradle控制台,看看是否有来自注释处理器的任何消息可以解释为什么没有生成代码。结果发现,我仍然在使用android apt,当我删除它时,一切都很好。我很乐意提供帮助。
configurations.all {
  resolutionStrategy {
    force "com.android.support:support-annotations:$SUPPORT_LIBRARY_VERSION"
  }
}