无法编译项目: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 创建的相应项目。
- 检查是否启用了注释处理:
File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors
- 检查是否安装了Lombok插件(插件安装后重启IDE):
File > Settings > Plugins
尝试不同的 Lombok 版本。 (目前最新的是 1.18.10)
确保在 Gradle 项目设置中包含 annotationProcessor 'org.projectlombok:lombok'
。
来自 this Lombok 设置页面:
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
}
我有一个由 gradle 构建的 spring 引导项目。当我编译它时,它由于 lombok 问题而失败。
error: cannot find symbol
sampleClass.getId();
^
我觉得很奇怪,因为在编辑器屏幕上看起来没有问题。
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 创建的相应项目。
- 检查是否启用了注释处理:
File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors
- 检查是否安装了Lombok插件(插件安装后重启IDE):
File > Settings > Plugins
尝试不同的 Lombok 版本。 (目前最新的是 1.18.10)
确保在 Gradle 项目设置中包含
annotationProcessor 'org.projectlombok:lombok'
。
来自 this Lombok 设置页面:
repositories {
mavenCentral()
}
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
}