@NotEmpty注解引发的报错

遇到报错如下:

复制代码
{ "msg": "HV000083: The specified annotation javax.validation.constraints.NotEmpty defines no attribute 'groups'.", "result": null, "succ": "fail" }

这是典型的Jar包冲突,使用javax.validation.constraints.NotEmpty搜索到对应的jar包,结果发现好几个Jar包都有NotEmpty注解,然后发现有一个jar包没有groups注解,这个包来自于我们项目中的二方jar包。我们项目中这几个jar包都引入了,没有排除,我的代码中使用的是有group属性的@NotEmpty注解,但是加载的时候是随机的,加载到了二方Jar包,所有报错了,这个时候就需要统一版本。

该注解是用来验证某个字段是否为空的,导入的包是import javax.validation.constraints.NotEmpty;我代码中想使用的是下面这个jar包的注解,引入的依赖如下

复制代码
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

下面列举了我项目中当时所有的有@NotEmpty注解的jar包。

1.jakarta.validation.constraints.NotEmpty

这个一般是springboot项目使用的注解,也有group属性。

2.二方包

内部的二方包,也有@NotEmpty注解,包路径也是javax.validation.constraints.NotEmpty。但它的实现还跟上面不一样,没有group属性,我这里就没有列出来。

3.javax.validation:validation-api:2.0.1.Final

这个正是我想使用的包。通过这次排查我总结了一些排查jar包冲突的思路。

1.找到报错的位置,使用具体的类和属性全局搜索

定位到来自哪个jar包,在看代码使用的是哪,然后再去pom文件看是否有冲突。本次报错是因为恰巧有多个jar包都有@NotEmpty注解,在pom文件可能并不会冲突,但是也要排除一下。

2.如果存在多个冲突的jar包

下面举个例子,如果jar包冲突了,它是会爆红的,如果你放在那不管,有可能没有问题,但是有些时候会产生冲突(版本不一样导致方法或属性的变更),可以使用下面的方式,点exclude快速排除依赖。

3.如果排除之后还是有冲突

需要找到对应模块的pom文件reimport一下。

如果还是没有解决,可能是本地缓存的问题。找到file,打开下面清除缓存。

相关推荐
知识搬运临时工6 分钟前
一个模板把 AEM 拖进 Full GC 死亡螺旋:300% CPU、7 GB 堆、310 万行堆栈
java·aws
CCIE-Yasuo8 分钟前
网络安全-学习web开发-列表、标签
前端·学习·web安全
熊猫钓鱼>_>8 分钟前
鸿蒙 PC 三方库适配复盘:libfvad 1.0 —— 把 WebRTC VAD 做成能装进采集链路的静态库
服务器·开发语言·华为·harmonyos·openharmony·适配·鸿蒙pc
用户4329359280510 分钟前
CoAP还是MQTT:1万只Cat.1水表三个月带宽续航实测
java
小大宇12 分钟前
Vue知识点-ElementPlus-06 单选+多选+下拉+日期选择
前端·vue.js·elementui
用户114818678948414 分钟前
Nuxt 3 学习版 Demo:跟着做一遍,从跑起来到自己会改
前端
知守观20 分钟前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
Java成神之路-35 分钟前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java
hiahiahia12337 分钟前
Streaming Model Output
开发语言·前端
paopaokaka_luck38 分钟前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts