【发布时间】:2015-01-23 14:49:50
【问题描述】:
我正在尝试将我的 Logger 注入到我的 EJB 中:
@Inject
Logger logger;
但我收到以下错误
Caused by: org.jboss.weld.exceptions.AmbiguousResolutionException: WELD-001318 Cannot resolve an ambiguous dependency between
[Producer Method [Logger] with qualifiers [@Any @Default] declared as [[method] @Produces public be.fgov.health.ecad.Resource.createLogger(InjectionPoint)],
Producer Method [Logger] with qualifiers [@Any @Default] declared as [[method] @Produces public be.fgov.health.ecad.Resource.createLogger(InjectionPoint)]]
我真的不知道这可能是什么?在我看来,下面的课程没有错吗?我不明白为什么 jBoss 说存在不明确的依赖关系..
@Dependent
public class Resource {
@Produces
public Logger createLogger(final InjectionPoint ip) {
return Logger.getLogger(ip.getMember().getDeclaringClass());
}
}
【问题讨论】:
-
可能
be.fgov.health.ecad.Resource这个类是由不同的部署应用提供的。 -
嗯..不。将其更改为荒谬的名称,仍然有错误。
-
您是否还有 AmbiguousResolutionException 但现在有两个不同的类名?
-
你应该检查你的类路径。如果
be.fgov.health.ecad.Resource类仍然被报告两次,即使在重命名问题中提到的类之后,看起来你正在部署的不是你重命名的类。 -
我见过由重复的
beans.xml引起的类似问题,例如在WEB-INF和META-INF中。