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

Quarkus CDI UnsatisfiedResolutionException:自定义包未被CDI识别

解决Quarkus依赖包中CDI Bean无法被识别的问题

针对你遇到的依赖包中@Singleton/@ApplicationScoped bean无法被主应用CDI容器识别、注入失败的问题,可按以下步骤排查解决:

  • 配置依赖包的CDI索引
    Quarkus默认仅扫描主应用的包路径,对于外部依赖包,需要明确告知CDI容器扫描该包的bean。在主应用的application.properties中添加如下配置(替换为你的依赖包坐标):

    quarkus.index-dependency.linear-integration.group-id=你的依赖包groupId
    quarkus.index-dependency.linear-integration.artifact-id=你的依赖包artifactId
    

    该配置会让Quarkus为指定依赖生成CDI索引,确保bean被容器发现。

  • 验证注解的正确性
    确保你的TestActions类使用的是Jakarta EE的注解:jakarta.inject.Singleton或jakarta.enterprise.context.ApplicationScoped,而非旧的javax包下的注解(Quarkus 3.x已全面切换到Jakarta API)。

  • 添加beans.xml到依赖包
    在依赖包的src/main/resources/META-INF目录下创建beans.xml文件,内容如下:

    <beans xmlns="https://jakarta.ee/xml/ns/jakartaee" bean-discovery-mode="all"/>
    

    该文件会明确告知CDI容器扫描当前jar包内的所有bean,适用于Quarkus 3.x版本(即使是无beans.xml的模式,显式添加也能避免扫描遗漏)。

  • 确认依赖引入的有效性
    检查主应用的构建配置(pom.xml/build.gradle),确保依赖包的scope为compile(默认值),而非test或其他限制范围,保证编译和运行时都能加载该包的类。

  • 检查版本兼容性
    确保依赖包使用的Quarkus版本与主应用完全一致(你当前使用的是3.17.8),版本不一致可能导致API冲突或CDI容器行为异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:34:57