添加PicketLink依赖后出现WELD-001414 Bean名称歧义问题
解决PicketLink与Deltaspike依赖冲突引发的WELD Bean名称歧义问题
你遇到的WELD-001414: Bean name is ambiguous. Name dsWindowContext resolves to beans错误,根源非常明确:你引入的picketlink:2.7.1.Final是一个包含Deltaspike JAR的UberJar,而你的项目已经单独引入了Deltaspike依赖,这就导致了同一个Bean(这里是dsWindowContext)被重复定义,触发了Weld容器的冲突检测。
下面是具体的解决步骤:
排除PicketLink中的Deltaspike依赖
修改你的pom.xml,在PicketLink的依赖项中添加排除规则,移除它自带的所有Deltaspike相关包——因为你的项目已经有独立的Deltaspike依赖,完全不需要重复引入:<dependency> <groupId>org.picketlink</groupId> <artifactId>picketlink</artifactId> <version>2.7.1.Final</version> <exclusions> <!-- 排除所有Deltaspike相关依赖,避免重复Bean定义 --> <exclusion> <groupId>org.apache.deltaspike</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>确认版本兼容性
建议先通过mvn dependency:tree命令查看PicketLink 2.7.1.Final原本依赖的Deltaspike版本,确保它和你项目中已引入的Deltaspike版本兼容,避免出现版本不匹配带来的其他潜在问题。清理并重新构建
执行mvn clean install命令,清理本地仓库中缓存的旧依赖文件,重新构建项目,确保重复的Deltaspike JAR已经被彻底移除。
内容的提问来源于stack exchange,提问作者Purple Haze
相关产品推荐
相关产品推荐

