我正在尝试将我的JSF应用程序迁移到CDI。我已经实现了以下更改:
然而,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会导致此错误?
开发环境:
答案 0 :(得分:4)
此异常表明OmniFaces JAR(特别是包含所提到的歧义类的JAR,在您的特定情况下为EagerBeansRepository
)在运行时类路径中重复。如果JAR正确放置在webapp的/WEB-INF/lib
而不是其他位置,那么如果在部署之前未正确清理GlassFish工作文件夹,则会发生这种情况。特别是已知GlassFish Eclipse插件在此失败。您需要在/glassfish/domains/[domainname]
。
顺便说一下,当你在这里时,我强烈建议你升级到GlassFish 4.1。 GlassFish 4.0就像每个第一个GlassFish版本一样(为#34;第一个Java EE X应用服务器"以及每个新的Java EE API版本准备好的所有麻烦)太多的童年错误。