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

Quarkus 3.2.0出现2.16.x版本未有的构建错误

Quarkus 3.2.0 依赖冲突:jakarta.ws.rs.ext.Providers 歧义依赖问题

问题场景

服务升级到Quarkus 3.2.0版本后,仅在引入自研3.2.0扩展(该扩展依赖多个其他自研3.2.0扩展)时出现编译构建错误。已排查所有扩展代码,未发现未标注@ApplicationScoped的@Provider类,且相同代码在Quarkus 2.16.6版本下无异常。

构建错误日志

Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:3.2.0.Final:build (default) on project edcs-quarkus-sample-service: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: Found 2 deployment problems:
[ERROR] [1] Ambiguous dependencies for type jakarta.ws.rs.ext.Providers and qualifiers [@Default]
[ERROR] - java member: io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyWriter():providers
[ERROR] - declared on CLASS bean [types=[jakarta.ws.rs.ext.MessageBodyWriter<java.lang.Object>, org.jboss.resteasy.reactive.server.spi.ServerMessageBodyWriter$AllWriteableMessageBodyWriter, org.jboss.resteasy.reactive.common.types.AllWriteableMarker, io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyWriter, org.jboss.resteasy.reactive.server.spi.ServerMessageBodyWriter<java.lang.Object>, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyWriter]
[ERROR] - available beans:
[ERROR] - PRODUCER METHOD bean [types=[java.lang.Object, jakarta.ws.rs.ext.Providers], qualifiers=[@Default, @Any], target=jakarta.ws.rs.ext.Providers providers(), declaringBean=org.jboss.resteasy.cdi.ContextProducers]
[ERROR] - PRODUCER METHOD bean [types=[java.lang.Object, jakarta.ws.rs.ext.Providers], qualifiers=[@Default, @Any], target=jakarta.ws.rs.ext.Providers providers(), declaringBean=io.quarkus.resteasy.reactive.server.runtime.QuarkusContextProducers]
[ERROR] [2] Ambiguous dependencies for type jakarta.ws.rs.ext.Providers and qualifiers [@Default]
[ERROR] - java member: io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyReader():providers
[ERROR] - declared on CLASS bean [types=[io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyReader, org.jboss.resteasy.reactive.server.jackson.JacksonBasicMessageBodyReader, org.jboss.resteasy.reactive.common.providers.serialisers.AbstractJsonMessageBodyReader, jakarta.ws.rs.ext.MessageBodyReader<java.lang.Object>, org.jboss.resteasy.reactive.server.spi.ServerMessageBodyReader<java.lang.Object>, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkus.resteasy.reactive.jackson.runtime.serialisers.FullyFeaturedServerJacksonMessageBodyReader]
[ERROR] - available beans:
[ERROR] - PRODUCER METHOD bean [types=[java.lang.Object, jakarta.ws.rs.ext.Providers], qualifiers=[@Default, @Any], target=jakarta.ws.rs.ext.Providers providers(), declaringBean=org.jboss.resteasy.cdi.ContextProducers]
[ERROR] - PRODUCER METHOD bean [types=[java.lang.Object, jakarta.ws.rs.ext.Providers], qualifiers=[@Default, @Any], target=jakarta.ws.rs.ext.Providers providers(), declaringBean=io.quarkus.resteasy.reactive.server.runtime.QuarkusContextProducers]

问题根源分析

核心问题是**jakarta.ws.rs.ext.Providers 存在两个重复的生产者Bean**:

  • org.jboss.resteasy.cdi.ContextProducers
  • io.quarkus.resteasy.reactive.server.runtime.QuarkusContextProducers

两者都提供了@Default限定的Providers实例,导致CDI容器无法确定注入哪个实例,触发歧义依赖错误。

Quarkus 3.x基于Jakarta EE 9+,与2.x(Jakarta EE 8)的Resteasy/Reactive组件实现差异较大,大概率是自研扩展在依赖引入时,同时引入了传统Resteasy和Resteasy Reactive的相关依赖,或是扩展的依赖配置在3.x版本下出现冲突。

排查与解决步骤

  1. 检查扩展依赖树

    • 执行mvn dependency:tree,搜索resteasy-cdi和quarkus-resteasy-reactive相关依赖,确认是否同时存在这两类依赖
    • 若发现冲突,在自研扩展的pom.xml中排除多余依赖(比如使用Resteasy Reactive时,排除resteasy-cdi相关依赖)
  2. 检查扩展部署配置

    • 确认自研扩展的deployment模块是否错误引入了不兼容的Resteasy组件
    • 检查扩展的@BuildStep是否存在不当依赖引入,导致触发两个不同的Providers生产者
  3. 验证Provider Scope配置

    • 再次确认所有自定义JAX-RS Provider是否正确标注@ApplicationScoped,排查是否存在通过其他方式注册Provider导致的冲突
    • 检查是否有扩展在注册Provider时,重复引入了Resteasy的上下文生产者
  4. 调整Quarkus版本

    • 若为Quarkus 3.2.0本身的已知问题,可尝试升级到3.2.x后续小版本,或回退到3.1.x版本验证是否解决问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:50:39