使用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依赖仅声明了
compileOnlyLombok,缺少注解处理器的依赖声明,导致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
相关产品推荐
相关产品推荐

