繁体   English   中英

WELD-001409类型[EagerBeansRepository]的不明确依赖关系

[英]WELD-001409 Ambiguous dependencies for type [EagerBeansRepository]

我正在尝试将我的JSF应用程序迁移到CDI。 我已经实现了以下更改:

  • 在WEB-INF中添加了一个空的beans.xml文件
  • 将@ManagedBean更改为@Named
  • 将我拥有的所有范围更改为CDI范围(会话,视图,请求)
  • 将所有@EJB和@ManagedProperty更改为@Inject

但是,Omnifaces错误阻止了部署,因为我收到以下错误三次:

org.jboss.weld.exceptions.DeploymentException:WELD-001409类型为[EagerBeansRepository]的模糊依赖项,注入点为[@Default] [[BackedAnnotatedField] @Inject private org.omnifaces.ApplicationListener.eagerBeansRepository]。 可能的依赖[[Managed Bean [class org.omnifaces.cdi.eager.EagerBeansRepository] ​​with qualifiers [@Any @Default],Managed Bean [class org.omnifaces.cdi.eager.EagerBeansRepository] ​​with qualifiers [@Any @Default]] ]

我已降级到Omnifaces 1.8.1并且部署成功。 为什么Omnifaces 2.0会导致此错误?

发展环境:

  • Glassfish 4
  • Omnifaces 2.0
  • JSF(Mojarra 2.2.0)
  • WELD-000900 2.0.0(SP1)

此异常表明OmniFaces JAR(特别是包含所提到的歧义类的JAR,在您的特定情况下为EagerBeansRepository )在运行时类路径中重复。 如果JAR正确放置在webapp的/WEB-INF/lib中而不是其他地方,那么如果在部署之前未正确清理GlassFish工作文件夹,则会发生这种情况。 特别是已知GlassFish Eclipse插件在此失败。 您需要手动清理/glassfish/domains/[domainname]的GlassFish工作文件夹。

顺便说一句,当你在它的时候,我强烈建议你升级到GlassFish 4.1。 GlassFish 4.0就像每个第一个GlassFish版本一样(所有麻烦都可以将它作为“First Java EE X Application Server”以及每个新的Java EE API版本)以及太多童年错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM