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"
我在 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"