You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rest-Assured与Lombok时Jackson-databind抛出UnrecognizedPropertyException

解决Jackson UnrecognizedPropertyException(IntelliJ与Eclipse运行差异问题)

问题核心

POJO字段设为private时,Jackson抛出UnrecognizedPropertyException,提示"page"字段未被识别;但字段设为public时代码正常运行,且相同配置在Eclipse中无报错。本质是Lombok的@Data注解在IntelliJ中未正确生成getter/setter方法,导致Jackson无法反序列化private字段。

原因分析

  • Lombok的@Data依赖注解处理器在编译阶段自动生成getter、setter、toString等方法。
  • Eclipse通常默认配置了Lombok插件并启用注解处理,能正常生成所需代码;而IntelliJ需手动配置插件和注解处理,且原Gradle依赖仅声明了compileOnly Lombok,缺少注解处理器的依赖声明,导致Lombok未生效。

解决方案

1. 安装并启用IntelliJ Lombok插件

打开IntelliJ → File → Settings → Plugins,搜索"Lombok",确保插件已安装并启用,重启IDE使配置生效。

2. 开启注解处理功能

打开IntelliJ → File → Settings → Build, Execution, Deployment → Compiler → Annotation Processors,勾选Enable annotation processing,点击Apply保存配置。

3. 完善Gradle依赖配置

在build.gradle的dependencies块中添加Lombok注解处理器依赖(仅compileOnly不足以触发注解处理):

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.7.1'
    testImplementation 'junit:junit:4.13.1'
    implementation 'io.rest-assured:rest-assured:5.3.0'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.14.2'
    testImplementation 'org.assertj:assertj-core:3.24.2'
    compileOnly 'org.projectlombok:lombok:1.18.26'
    // 添加注解处理器依赖,确保Lombok能生成代码
    annotationProcessor 'org.projectlombok:lombok:1.18.26'
}

4. 同步依赖并验证

  • 点击IntelliJ右侧Gradle面板的Refresh按钮,重新同步项目依赖。
  • 执行Build → Build Project编译项目,可通过查看build/classes/java/main下的User.class文件(反编译),确认是否生成了getPage()、setPage()等方法。

验证效果

修改完成后重新运行测试脚本,Jackson将通过Lombok生成的getter/setter访问private字段,不再抛出UnrecognizedPropertyException异常。

内容的提问来源于stack exchange,提问作者MrBiz00ka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:27:55