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

基于Jakarta命名空间的Java SE CDI+Weld应用初始化时出现NoSuchMethodError求助

解决Weld SE初始化时的NoSuchMethodError问题

问题原因

这个NoSuchMethodError是依赖版本冲突导致的:

  • org.jboss.jandex.ClassInfo.annotationsMap()是Jandex 3.x版本新增的API
  • 你的项目中大概率存在旧版本Jandex依赖(低于3.0.0),Maven依赖调解机制优先加载了旧版本,而Weld SE 5.1.0.Final需要依赖Jandex 3.x的该方法

解决方案

1. 排查冲突的Jandex依赖

执行Maven命令查看完整依赖树,定位引入旧版本Jandex的依赖:

mvn dependency:tree

在输出中搜索org.jboss.jandex,确认是否存在版本低于3.0.0的条目。

2. 排除冲突的旧版本依赖

找到引入旧Jandex的依赖后,添加排除规则:

<dependency>
    <!-- 替换为实际冲突的依赖坐标 -->
    <groupId>你的依赖groupId</groupId>
    <artifactId>你的依赖artifactId</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.jboss.jandex</groupId>
            <artifactId>jandex</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 显式声明兼容的Jandex版本

如果排查冲突麻烦,可直接在pom.xml中添加与Weld 5.1.0.Final匹配的Jandex版本:

<dependency>
    <groupId>org.jboss.jandex</groupId>
    <artifactId>jandex</artifactId>
    <version>3.1.1.Final</version>
</dependency>

4. 验证基础环境

确认项目满足Weld 5.x的运行要求:

  • 使用Java SE 11或更高版本
  • beans.xml路径正确(你已放置在src/main/resources/META-INF,此部分无问题)

内容的提问来源于stack exchange,提问作者r-uu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:55:24