代码之家  ›  专栏  ›  技术社区  ›  StackOverflow Account

Java EE 6生产者不工作[重复]

  •  0
  • StackOverflow Account  · 技术社区  · 7 年前

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

    @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 如果我尝试使用注入式记录器

    1 回复  |  直到 7 年前
        1
  •  1
  •   StackOverflow Account    7 年前

    谢谢大家的回复。

    问题是我自己在将记录器注入的类(bean)中的编码错误。我错误地使用了 constructor 在CDI有机会注入之前初始化试图使用记录器的类

    @PostConstruct

    @MyAnnotation
    @Singleton
    public class MtHammer implements Hammer {
    
        .....
    
        @Inject
        Logger logger2;
    
    
        @PostConstruct
        private void startup() {
    
            initialise();
    
        }
    
         private void initialise() {
                logger.info("logger...Initialising ...");
          ....
            }