【问题标题】:Lombok not working with "Android room". Gives "error: Cannot find getter for field"Lombok 无法使用“Android 房间”。给出“错误:找不到字段的吸气剂”
【发布时间】:2017-05-26 14:14:20
【问题描述】:

我在带有 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.

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

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

【问题讨论】:

    标签: android lombok android-room intellij-lombok-plugin


    【解决方案1】:

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

    【讨论】:

      【解决方案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"
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 我在 java 中编写代码,而不是在 scala 或 kotlin 中,所以我没有使用任何这些 var 或 val。
        【解决方案4】:

        试试吧,它对我有用。

        public String getmState(){
            return mState;
        }
        

        改成

        public String getMState(){
            return mState;
        }
        

        【讨论】:

        • 这是一个明确定义的getter方法。最初的问题是关于 Lombok (projectlombok.org)
        猜你喜欢
        • 2020-02-24
        • 1970-01-01
        • 2018-08-17
        • 1970-01-01
        • 2016-10-12
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多