当前位置: 首页 > 知识库问答 >
问题:

在我的spring boot项目中使用lombok依赖项,但getter方法在运行时产生错误(尽管构建成功)

孔君浩
2023-03-14

我正在开发一个spring boot项目,使用Gradle作为ItelliJ IDE上的构建工具。

我在gradle.build中声明了龙目岛的依赖关系:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web:2.5.3'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    compileOnly 'org.projectlombok:lombok:1.18.20'
}

我有一个模型类:

import lombok.Data;
import java.math.BigDecimal;

@Data
public class ProductModel {
    private String name;
    private BigDecimal price;
    private Integer quantity;
}

如您所见,我已经用@Data进行了注释。

我的控制器有处理POST请求的方法,其有效负载映射到ProductModel

@PostMapping
public String createProduct(@RequestBody ProductModel productPayload) {
       // Runtime error: error: cannot find symbol, 'getName' in 'ProductModel'
       productPayload.getName();
}

我知道我需要在我的IntelliJ IDE上安装lombok插件,以避免getter方法上的编译器错误。所以我这样做了。但是当我运行我的应用程序时,我得到了错误:

error: cannot find symbol
symbol:   method getName()
location: variable productPayload of type CreateProductRestModel

我还尝试将依赖项从compileOnly更改为实现

implementation 'org.projectlombok:lombok:1.18.20'

没用。为什么?我错过了什么?

(我也在IntelliJ上启用了注释处理器(annotationProcessor)

共有1个答案

梁德馨
2023-03-14

为了让Gradle能够使用注释处理器,他们引入了一种单独的配置,可以在“正常”编译之前生成所有新代码。

对龙目岛来说,它看起来像这样:

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.20'
    annotationProcessor 'org.projectlombok:lombok:1.18.20'
    
    testCompileOnly 'org.projectlombok:lombok:1.18.20'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.20'
}
 类似资料:
  • 我有什么似乎是一个简单的问题,关于如何设置Jenkins和maven 3。 为了简单起见,假设我们有四个项目: 没有依赖关系的模型 Commons依赖于模型 服务器依赖于Common和模型 前端依赖于模型 我想要实现的是,一个成功的基于模型的构建触发所有项目的新构建,这些项目在其pom中依赖于模型(这里是公共的,服务器和前端) 如果Common失败,则无需构建服务器。 在上述情况下,我似乎可以通过

  • 我创建了一个Maven项目(可重用库),该项目有许多依赖项(编译时和运行时),它们也可以过渡地依赖于其他许多依赖项。在maven中,我可以在pom中添加依赖项。xml及其可传递依赖关系将自动处理。所以,我将毫无问题地运行。 现在,我有一个非Maven(基于Ant的)项目,上面创建的库(Maven Lib)将使用它。 在这种情况下,运行时间

  • 即使我添加了这个,当我运行gradle build时,它仍然有效,并且可以编译带有Commons-math3的代码。但是当我在build/中运行jar文件时, 它说异常在线程"main"java.lang.NoClassDefFoundError: org/apache/Commons/math3/Complex/Complex 但Gradle官方网站表示,“编译”中的资源也将包含在“运行时”依赖

  • 由于butterknife依赖的错误,我无法构建android项目。 错误 任务': app: javaPreCompileDebug'执行失败。 无法解析配置的所有文件: app: dedegAnnotationProcessorClasspath。转换butterknife-compiler-8.6.0.jar失败(com.jakewharton:巴特切夫-编译器: 8.6.0)以匹配属性{a

  • 我正在尝试使用此分步指南将OpenCV包含在我的Android Studio项目中。但是,在将OpenCV添加为模块依赖项(指南中的第4步)后,Gradle项目同步失败并出现以下错误: 我发现了这个相关的问题,并尝试在openCV构建中调整构建类型。gradle添加了一个调试字段,但它没有改变任何东西。我还试着调整应用程序的构建。渐变如下 (还有几个稍有不同的版本,因为我不完全确定我在那里做了什么

  • 我用Spring Boot创建了一个多模块项目,用于部署我的应用程序,并使用gradle作为我的构建工具。 现在,我正在为项目中的一些模块创建独立的部署。有些项目需要嵌入式tomcat,有些则不需要。所有的公共依赖都放在一个公共项目上,所有其他模块都依赖于这个公共项目。 我在建筑中这样做。Gradle其他项目 但是在构建它时抛出了这个错误: 启动失败:生成文件'/users/user1/docum