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

Quarkus 3.8集成CXF OpenTelemetry出现依赖缺失错误求助

问题原因分析

1. 版本兼容性不匹配

Quarkus 3.8.6 LTS 对应的 quarkus-cxf-integration-tracing-opentelemetry 扩展存在版本适配问题:该扩展在这个Quarkus版本下,依赖的OpenTelemetry API/实现版本与Quarkus BOM中定义的版本不一致,导致无法找到可注入的 io.opentelemetry.api.OpenTelemetry 实例。

2. 核心依赖缺失

quarkus-cxf-integration-tracing-opentelemetry 本身不提供OpenTelemetry的核心实现,它依赖 quarkus-opentelemetry 扩展来提供可注入的 OpenTelemetry bean。如果项目中没有显式引入 quarkus-opentelemetry 依赖,降级Quarkus BOM后就会出现依赖缺失的情况。

3. 扩展初始化顺序问题

Quarkus 3.8.6 的扩展初始化逻辑有调整,导致CXF tracing扩展尝试注入 OpenTelemetry 实例时,OpenTelemetry扩展还未完成bean的初始化,最终触发依赖解析失败。


解决方法
  • 指定兼容的CXF扩展版本:查找与Quarkus 3.8.6 LTS匹配的 quarkus-cxf-integration-tracing-opentelemetry 版本,在pom.xml中显式声明该版本,避免依赖传递带来的版本不匹配:

    <dependency>
        <groupId>io.quarkiverse.cxf</groupId>
        <artifactId>quarkus-cxf-integration-tracing-opentelemetry</artifactId>
        <version>[兼容Quarkus 3.8.6的版本号]</version>
    </dependency>
    
  • 添加OpenTelemetry核心依赖:确保项目中引入 quarkus-opentelemetry 依赖,为CXF扩展提供所需的 OpenTelemetry bean:

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-opentelemetry</artifactId>
    </dependency>
    
  • 排查并解决依赖冲突:执行 mvn dependency:tree 命令分析依赖树,找出OpenTelemetry相关依赖的版本冲突,通过 <exclusions> 排除不兼容的版本,强制使用Quarkus 3.8.6 BOM中定义的版本:

    <dependency>
        <groupId>io.quarkiverse.cxf</groupId>
        <artifactId>quarkus-cxf-integration-tracing-opentelemetry</artifactId>
        <exclusions>
            <exclusion>
                <groupId>io.opentelemetry</groupId>
                <artifactId>opentelemetry-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  • 手动提供OpenTelemetry bean:如果默认初始化逻辑失效,可通过自定义Producer手动创建 OpenTelemetry 实例:

    import io.opentelemetry.api.OpenTelemetry;
    import io.opentelemetry.sdk.OpenTelemetrySdk;
    import jakarta.enterprise.context.ApplicationScoped;
    import jakarta.enterprise.inject.Produces;
    
    @ApplicationScoped
    public class OpenTelemetryProducer {
        @Produces
        public OpenTelemetry produceOpenTelemetry() {
            return OpenTelemetrySdk.builder().buildAndRegisterGlobal();
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:37:18