org.jboss.weld.exceptions.DeploymentException WELD-001409: Неоднозначные зависимости для типа X с квалификаторами @Default - PullRequest
0 голосов
/ 22 мая 2019

Я следовал за документом (https://docs.jboss.org/weld/reference/latest/en-US/html/injection.html), чтобы создать квалификаторы, теперь я получаю ошибку развертывания в wildfly-10.1.0. Наконец, я прочитал много похожих вопросов в Интернете, но до сих пор не понимаю. Код может компилироваться, и инъекции хорошо работают для других классов.

Вот ошибка:

"{
    \"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;

Кажется, что первая инъекция сработала, а вторая не удалась. Есть идеи?

1 Ответ

0 голосов
/ 22 мая 2019

Я наконец-то нашел его.

Глупая IDE автоматически импортировала класс Qualifier из платформы Spring

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

, и ему показалось, что

import javax.inject.Qualifier;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...