Lombok not working with "Android room". Gives "error: Cannot find getter for field"

Lombok not working with "Android room". Gives "error: Cannot find getter for field"

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

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

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

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

会报错,即:

error: Cannot find getter for field.

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

任何ideas/solutions?

您是否在模型中使用了 val class?如果是,则更改为 var

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

试试看,对我有用。

public String getmState(){
    return mState;
}

改为

public String getMState(){
    return mState;
}

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"