6

我在带有 gradle 3.0.0-alpha1 的 android studio 3.0 预览中使用 Lombok。我的依赖项中有以下两个注释处理器:

annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha1"
annotationProcessor "org.projectlombok:lombok:1.16.16"

现在,如果我在同一类中使用来自两个依赖项的注释,例如:

@Entity(tableName = "test")
@Getter
public final class TestEntity {...}

它会产生一个错误,即:

error: Cannot find getter for field.

但是,如果我删除其中任何一个,它就会正常工作。

有什么想法/解决方案吗?

4

4 回答 4

17

重新排序您的注释处理器声明。将 lombok 移到房间编译器上方

于 2018-07-04T16:07:34.207 回答
2

从 Edwin Nyawoli 的回答中,我只想说清楚

在您的 build.gradle 模块文件中,将 Lombok 依赖重新排序到 Room 依赖之上

// Lombok
compileOnly "org.projectlombok:lombok:$lombok_version"
annotationProcessor "org.projectlombok:lombok:$lombok_version"

// Room
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
于 2019-12-13T17:44:51.017 回答
0

您在模型类中使用 val 吗?如果是,请更改为 var

于 2017-07-05T12:56:33.817 回答
-3

试试吧,它对我有用。

public String getmState(){
    return mState;
}

改成

public String getMState(){
    return mState;
}
于 2018-08-03T08:50:13.440 回答