gpt4 book ai didi

java - 注入(inject)slf4j Logger : Unsatisfied dependencies for type Logger with qualifiers @Default

转载 作者:行者123 更新时间:2023-12-02 09:14:51 26 4
gpt4 key购买 nike

我想将 Logger 注入(inject)到在 WildFly 10 上运行的 Maven 动态 Web 项目中的 bean 中。

我在 POM 中添加了依赖项。 WildFly 中提供了范围:

    <!-- Logger -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
<scope>provided</scope>
</dependency>

我创建了一个生产者:

import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Singleton;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Singleton
public class LoggerProducer {

@Produces
Logger createLogger(final InjectionPoint ip) {
return LoggerFactory.getLogger(ip.getMember().getDeclaringClass());
}
}

然后我尝试注入(inject)记录器:

@Inject
private Logger log;

此时我已经收到警告:

没有 Bean 符合注入(inject)到注入(inject)点的条件 [JSR-346 §5.2.2]

当我尝试使用它时,我收到此错误:

Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type Logger with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private init.StartupBean.log
at init.StartupBean.log(StartupBean.java:0)

我错过了什么?我是不是忘记了什么?

最佳答案

即使多年后,我在使用 Arquillian 进行测试时也遇到了同样的问题。在 Arquillian 中,您(通常)仅包含测试所需的类。在我的例子中,CDI 资源生成器保存在一个名为 Resources 的类中。我发现 Resources.class 引用的所有类也必须包含在内。否则你会得到这个问题的错误消息。一旦你知道了,可能就很明显了。

主要问题:一定有一个根本原因(ClassNotFound 或其他什么)最不幸的是没有传播到控制台,让我们陷入黑暗。

关于java - 注入(inject)slf4j Logger : Unsatisfied dependencies for type Logger with qualifiers @Default,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38302941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com