【问题标题】:org.jboss.weld.exceptions.DeploymentException WELD-001409: Ambiguous dependencies for type X with qualifiers @Defaultorg.jboss.weld.exceptions.DeploymentException WELD-001409: 带有限定符 @Default 的类型 X 的不明确依赖项
【发布时间】:2019-05-22 11:39:53
【问题描述】:

我按照文档 (https://docs.jboss.org/weld/reference/latest/en-US/html/injection.html) 创建了限定符,现在我在 wildfly-10.1.0.Final 中遇到了部署错误,我在互联网上提出了很多类似的问题,但仍然没有任何线索。 代码可以编译,注入对其他类也很有效。

这是错误:

"{
    \"WFLYCTL0080: Failed services\" => {\"jboss.deployment.unit.\\\"test.war\\\".WeldStartService\" => \"org.jboss.msc.service.StartException in service jboss.deployment.unit.\\\"test.war\\\".WeldStartService: Failed to start service
    Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 2 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type MessageSender with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject @B private test.AccessService.messageSenderB
  at test.AccessService.MessageSenderB(AccessService.java:0)
  Possible dependencies:
  - Managed Bean [class test.messagesender.impl.MessageSenderBImpl] with qualifiers [@Any @Default],
  - Managed Bean [class test.messagesender.impl.MessageSenderAImpl] with qualifiers [@Any @Default]

以下是课程:

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ TYPE, METHOD, PARAMETER, FIELD })
@Documented
public @interface A{}
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ TYPE, METHOD, PARAMETER, FIELD })
@Documented
public @interface B{}
public interface MessageSender {}
@Singleton
@A
public class MessageSenderAImpl implements MessageSender {}
@Singleton
@B
public class MessageSenderBImpl implements MessageSender {}
@Singleton
public class AccessService {
    @Inject
    @A
    private MessageSender messageSenderA;

    @Inject
    @B
    private MessageSender messageSenderB;

似乎第一次注入成功,第二次失败。有什么想法吗?

【问题讨论】:

  • 您能否确保限定符是运行时部署的一部分?因为异常表明它们不存在/不可见。

标签: java jboss cdi qualifiers


【解决方案1】:

我终于找到了。

愚蠢的 IDE 自动从 spring 框架中导入了 Qualifier 类

import org.springframework.beans.factory.annotation.Qualifier;

认为正确的使用是

import javax.inject.Qualifier;

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多