Jakarta ee Java EE 6生产者不工作

Jakarta ee Java EE 6生产者不工作,jakarta-ee,nullpointerexception,cdi,inject,Jakarta Ee,Nullpointerexception,Cdi,Inject,我正在使用JBossAS7和JavaEE6。我有一个空的beans.xml文件 我有一个像这样的伐木制作人 @Singleton @Startup public class LoggerProducer { private static Logger logger = Logger.getLogger(LoggerProducer.class.getName()); @Produces public Logger produceLogger(final Inject

我正在使用JBossAS7和JavaEE6。我有一个空的beans.xml文件

我有一个像这样的伐木制作人

@Singleton
@Startup
public class LoggerProducer {

     private static Logger logger = Logger.getLogger(LoggerProducer.class.getName());

    @Produces
    public Logger produceLogger(final InjectionPoint injectionPoint) {  
        final String injectingClass = injectionPoint.getMember().getDeclaringClass().getName();
        return Logger.getLogger(injectingClass);  
    }  
}

在我的课堂上,我注入如下

@Inject
Logger logger;
在每种情况下,我都导入java util logger

import java.util.logging.Logger;

一切都正确部署,但是记录器的注入失败,如果我尝试使用注入的记录器,我会得到一个运行时
NullPointer
,感谢所有回复

我把beans.xml放在了正确的位置(WEB-INF)。它被包装成一场战争

问题是我自己在将记录器注入的类(bean)中的编码错误。我错误地使用了
构造函数
来初始化该类,因此在CDI有机会注入该类之前,该类试图使用记录器

修复方法是用
@PostConstruct
方法替换构造函数,所有方法都运行良好

@MyAnnotation
@Singleton
public class MtHammer implements Hammer {

    .....

    @Inject
    Logger logger2;


    @PostConstruct
    private void startup() {

        initialise();

    }

     private void initialise() {
            logger.info("logger...Initialising ...");
      ....
        }

..您必须修改log4j.xml文件。。根据您的要求,Shi@idotduffer,谢谢您的回复。我没有使用log4j,但我使用的是javautil日志。这将使用/standalone/configuration/logging.properties中自动生成的logging.properties文件您的beans.xml放在正确的位置了吗?你有WAR或EAR文件吗?您还注入了其他有效的对象吗?。将bean.xml放在META-INF文件夹中,对于war文件,它应该在META-INF中,对于EAR文件,它应该在WEB-INF中。