Maven org.jboss.weld.exceptions.DeploymentException:weld-001409:带有限定符@Default的类型Bean的不明确依赖项

Maven org.jboss.weld.exceptions.DeploymentException:weld-001409:带有限定符@Default的类型Bean的不明确依赖项,maven,jsf,dependencies,cdi,omnifaces,Maven,Jsf,Dependencies,Cdi,Omnifaces,昨天我的项目进展顺利。我所做的唯一一件事就是将结构从单一战争更改为多模块pom。如果我正确理解stacktrace,则weld和omnifaces websocket lib之间存在歧义。然而,在stacktrace上似乎没有调用我的任何方法。那么也许这是全方位的问题?我甚至不使用omnifaces websocket,而是使用javax.websocket。不过,我过去确实在这个项目中尝试过,我在“org.omnifaces.cdi”上搜索过,并从子包(如@Param)中注释了一些内容,但问题

昨天我的项目进展顺利。我所做的唯一一件事就是将结构从单一战争更改为多模块pom。如果我正确理解stacktrace,则weld和omnifaces websocket lib之间存在歧义。然而,在stacktrace上似乎没有调用我的任何方法。那么也许这是全方位的问题?我甚至不使用omnifaces websocket,而是使用javax.websocket。不过,我过去确实在这个项目中尝试过,我在“org.omnifaces.cdi”上搜索过,并从子包(如
@Param
)中注释了一些内容,但问题仍然存在。 我也不明白为什么这种模糊性似乎来自两个完全相同的类别:

  • 托管Bean[class org.omnifaces.cdi.push.SocketSessionManager]及其限定符[@Any@Default]
  • 托管Bean[classorg.omnifaces.cdi.push.SocketSessionManager]及其限定符[@Any@Default]
org.jboss.weld.exceptions.DeploymentException:weld-001409:具有限定符@Default的SocketSessionManager类型的不明确依赖项 在注入点[BackedAnnotatedField]@InjectPrivate org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions

基本上,Weld发现了多个CDI管理的bean,这些bean可以注入类的
私有SocketSessionManager socketSessions
字段中。其后列出:

可能的依赖关系:

  • 托管Bean[classorg.omnifaces.cdi.push.SocketSessionManager]及其限定符[@Any@Default]
  • 托管Bean[classorg.omnifaces.cdi.push.SocketSessionManager]及其限定符[@Any@Default]
然而,在这种特殊情况下,它们是完全相同的。这意味着在运行时类路径中有多个
SocketSessionManager
类。这反过来意味着运行时类路径中存在多个OmniFaces库/依赖项(或脏构建/(热)部署,可以通过破坏服务器的工作/临时文件夹或生成干净的服务器实例来解决)

您需要确保运行时类路径中只有一个OmniFaces库,并且它最终位于WAR的
/WEB-INF/lib


这与WebSocket没有特别的关系。它恰好是第一个被Weld扫描的与OmniFaces相关的类。这可能发生在OmniFaces中捆绑的任何其他CDI托管bean上。

也可能只是pom中的版本更改,以及maven构建缓存不一致。 A.
mvn清洁

在我的例子中有帮助。

您的运行时类路径被多个OmniFaces库污染。清理它,必要时也在服务器端清理。可以肯定的是,OmniFaces被设计为一个WAR库,因此WAR/WEB-INF/lib是唯一正确的地方,它绝对不应该位于其他地方(例如EAR/lib或Server/lib),请参见其主页上的安装说明。谢谢@BalusC,我知道拥有jar而不是maven依赖将再次困扰我:)。看起来你在maven中的RC2中包含了修复程序,所以我不需要再担心这个问题了。我也遇到了类似的问题,但找不到根本原因。你能帮忙吗?@BalusC我也面临类似的问题。你能帮忙吗@BalusC已清洁,所有部件均正常工作:OmniFaces 3.4.1、Weld 3.1.3.Final和CDI 2.0、JBoss WildFly 18.0.1.Final、Undertow 2.0.27.Final、Mojarra 2.3.9.SP04、Faces 2.3和PrimeFace 7.0.12。
[2016-06-25 03:13:59,430] Artifact core:war: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"core-0.0.1-SNAPSHOT.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"core-0.0.1-SNAPSHOT.war\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 4 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketSessionManager with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions
  at org.omnifaces.cdi.push.SocketPushContextProducer.socketSessions(SocketPushContextProducer.java:0)
  Possible dependencies: 
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default],
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default]

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketSessionManager with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketChannelManager.socketSessions
  at org.omnifaces.cdi.push.SocketChannelManager.socketSessions(SocketChannelManager.java:0)
  Possible dependencies: 
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default],
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default]

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type SocketUserManager with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private org.omnifaces.cdi.push.SocketSessionManager.socketUsers
  at org.omnifaces.cdi.push.SocketSessionManager.socketUsers(SocketSessionManager.java:0)
  Possible dependencies: 
  - Managed Bean [class org.omnifaces.cdi.push.SocketUserManager] with qualifiers [@Any @Default],
  - Managed Bean [class org.omnifaces.cdi.push.SocketUserManager] with qualifiers [@Any @Default]

    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:367)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Exception 0 :
org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318: Cannot resolve an ambiguous dependency between: 
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default],
  - Managed Bean [class org.omnifaces.cdi.push.SocketSessionManager] with qualifiers [@Any @Default]
    at org.jboss.weld.manager.BeanManagerImpl.resolve(BeanManagerImpl.java:1235)
    at org.jboss.weld.bootstrap.Validator.validatePseudoScopedInjectionPoint(Validator.java:926)
    at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:902)
    at org.jboss.weld.bootstrap.Validator.reallyValidatePseudoScopedBean(Validator.java:917)
    at org.jboss.weld.bootstrap.Validator.validatePseudoScopedBean(Validator.java:879)
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:138)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:518)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
    at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63)
    at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
"}}