Writer上的NullPointerException,位于org.apache.log4j.helpers.CountingQuietWriter.write

时间:2018-08-03 21:43:41

标签: java nullpointerexception log4j

我从具有log.info语句的简单代码行中得到以下错误

java.lang.NullPonterException
    at java.io.Writer.write(Writer.java:157)
    at org.apache.log4j.helpers.CountingQuietWriter.write(CountingQuietWriter.java:45)
    at org.apache.log4j.WritingAppender.subAppend(WriterAppender.java:310)
    at org.apache.log4j.RollingAppender.subAppend(RollingAppender.java:276)
    at org.apache.log4j.WritingAppender.append(WriterAppender.java:162)
    at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
    at org.apache.log4j.helpers.AppenderAttachbleImpl.appendLoopOnAppenders(AppenderAttachbleImpl.java:66)
    at org.apache.log4j.Category.callAppenders(Category.java:206)
    at org.apache.log4j.Category.forcedLog(Category.java:391)
    at org.apache.log4j.Category.info(Category.java:666)
    at com.bizcase.Helper.showTip(Helper.java:32)

任何人都可以建议遇到此问题吗?

我正在使用log4j版本1.2.17和常规滚动附加程序。

它不是null对象的NullPonterException,它来自log4j库,超出了我的控制范围,无法确定是哪个log4j属性或代码导致了此问题。

1 个答案:

答案 0 :(得分:1)

查看源代码 1

  • “ org.apache.log4j.helpers.CountingQuietWriter.write(CountingQuietWriter.java:45)”是对Writer.write(String)的调用。

  • Writer.write(String)仅在字符串为null时才能抛出NPE。

  • 这意味着使用null参数调用了CountingQuietWriter.write。

以此类推。 (您可以做剩下的!)

我想您会发现根本原因是org.apache.log4j.Category.info(...)消息正在调用null

还要注意,Category的javadoc指出:

  

绝对不需要新的客户端代码来使用或引用Category类。尽可能避免引用或使用它。


因此,如果com.bizcase.Helper是您的 代码,则需要对其进行修改,两者,以修复NPE错误以避免直接使用Category

如果不是您的代码,则需要找出空字符串在info调用中的位置。我的猜测是这是缺少的工具提示……之类的。


1-我受此困扰,因为我不知道您使用的Java和log4j的确切版本,因此无法确定我是否拥有正确的源代码。而且我不知道com.bizcase.Helper的来源是什么样。另一方面,您(作为开发人员)可以找到这些东西。