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

Quarkus升级至3.6.3后Hibernate Validator构建报错NoSuchMethodError

问题分析与解决

这个NoSuchMethodError的根本原因是依赖版本不兼容,和Set的校验器无关。Quarkus 3.x基于Jakarta EE 9+体系,对依赖版本有严格的一致性要求,你遇到的是Hibernate Validator内部方法签名不匹配的问题,大概率是依赖树里混进了旧版本的Hibernate Validator或者javax.validation相关依赖。

解决步骤

  • 清理依赖冲突
    用构建工具的依赖分析命令排查冲突:

    • Maven:执行mvn dependency:tree,搜索hibernate-validator和javax.validation,如果发现非Quarkus BOM管理的版本,直接在对应依赖中排除。
    • Gradle:执行./gradlew dependencies,同样排查并排除冲突依赖。
  • 不要手动指定扩展版本
    Quarkus的BOM已经统一管理了所有官方扩展的版本,引入依赖时不要加版本号,让BOM自动控制版本匹配:

    // Gradle示例
    implementation 'io.quarkus:quarkus-hibernate-validator'
    
    <!-- Maven示例 -->
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-hibernate-validator</artifactId>
    </dependency>
    
  • 修正不必要的校验注解
    OpenAPI生成的@NotNull @Valid Set<Long> requestBody里,@Valid是多余的——Long是基本类型包装类,不需要嵌套校验。如果要校验集合不为空,应该用@NotEmpty或者@Size(min = 1),@NotNull仅校验集合引用不为null,空集合不会触发校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:40:03