- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我将其添加到我的项目 POM 中:
<dependency>
<groupId>org.apache.onami.logging</groupId>
<artifactId>org.apache.onami.logging.log4j2</artifactId>
<version>3.4.0-incubating</version>
</dependency>
并执行@InjectLogger
@InjectLogger
Logger logger;
logger.info("Created"); // NPE here.
可能是什么问题?
最佳答案
您必须安装新的 Log4j2LoggingModule( Matchers.any() )。参见
http://onami.incubator.apache.org/logging/log4j2.html
我个人更喜欢带有 logback 的 slf4j,但更喜欢 ymmv。
如果您仍然遇到 NPE:
字段注入(inject)发生在初始化 block 和构造函数运行之后。只有在那之后,字段才不会为空。如果你之前引用了字段,那么你会得到 NPE。方法注入(inject)发生在字段注入(inject)之后。您可以使用方法注入(inject)来模拟 @PostConstruct 或使用专用注释,例如 onami-lifecycle 中的注释。 .
@InjectLogger Logger log;
CtorInjectedStuff stuff;
@Inject Foo(CtorInjectedStuff stuff){
this.stuff = stuff;
log.info("created"); // null as fields are not yet injected
}
@Inject public void postConstruct(){
log.info("post construct"); // works
}
遗憾的是你做不到
@Inject Foo(CtorInjectedStuff stuff, @InjectLogger Logger log){
...
}
as custom injections work only after instance is created .
注意:@InjectLogger 支持是使用前面提到的自定义注入(inject)来实现的 MembersInjector .
恕我直言:注入(inject)记录器并不能提供足够的附加值来保证在简单的静态字段上带来额外的麻烦,但又是 ymmv。
关于java - @InjectLogger 上的 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803933/
我将其添加到我的项目 POM 中: org.apache.onami.logging org.apache.onami.logging.log4j2
我是一名优秀的程序员,十分优秀!