无法编译项目:lombok 创建的 Getter 不起作用

Can't compile a project: Getter created by lombok doesn't work

我有一个由 gradle 构建的 spring 引导项目。当我编译它时,它由于 lombok 问题而失败。

error: cannot find symbol
        sampleClass.getId();
                   ^

我觉得很奇怪,因为在编辑器屏幕上看起来没有问题。 数据 class 是:

import lombok.Data;

@Data
public class SampleClass {
    private int id;
}

控制器 class 是:

@RestController
public class MyController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String getTop()
    {
        SampleClass sampleClass = new SampleClass();
        sampleClass.getId();
        return "test";
    }

}

对 build.gradle 的依赖是:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    compileOnly 'org.projectlombok:lombok:1.16.10'
    runtimeOnly 'mysql:mysql-connector-java'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
    }
}

谁能解释一下这个问题?
谢谢。

您缺少在 annotationProcessor 配置中定义 Lombok 依赖项。

annotationProcessor 'org.projectlombok:lombok'

由于您正在使用 Spring 引导,您可以从该特定依赖项中删除 version,因为它已经由 Spring 依赖项管理插件。

有关完整上下文,请查看 Spring Initializr 创建的相应项目。

  1. 检查是否启用了注释处理

File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors

  1. 检查是否安装了Lombok插件(插件安装后重启IDE):

File > Settings > Plugins

  1. 尝试不同的 Lombok 版本。 (目前最新的是 1.18.10)

  2. 确保在 Gradle 项目设置中包含 annotationProcessor 'org.projectlombok:lombok'

来自 this Lombok 设置页面:

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.10'
    annotationProcessor 'org.projectlombok:lombok:1.18.10'
}