类变量的空指针异常

时间:2018-08-29 15:26:26

标签: java nullpointerexception

我遇到一个奇怪的错误,我正在使用创建的变量,但随后出现了Null Pointer Exception Error。这是我的代码:

public class ReadXMLFile {
// Initialize logger
private static Logger log = Logger.getLogger(ReadXMLFile.class);

public Document getXMLDocument() {
    Document doc = null;

    File configXmlFile = new File("");
    try {           
        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

        System.out.println(LanguageHandler.source); //null

        configXmlFile = LanguageHandler.source;

        System.out.println(LanguageHandler.source); //null
        System.out.println("conf : " + configXmlFile.isFile()); //Null pointer exception

        doc = docBuilder.parse(configXmlFile);  

    } catch (Exception e) {
        e.printStackTrace();
        log.error(e.getMessage(), e);
    }

    return doc;
}

}

这是错误:

java.lang.NullPointerException
at in.raster.oviyam.util.ReadXMLFile.getXMLDocument(ReadXMLFile.java:85)
at in.raster.oviyam.util.ReadXMLFile.getElementValues(ReadXMLFile.java:99)
at in.raster.oviyam.servlet.DicomNodes.doGet(DicomNodes.java:90)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

ReadXMLFile类的第85行是我的System.out.println("conf : " + configXmlFile.isFile());

我不明白为什么会出现此错误,它应该只返回false。

提前感谢您的帮助!

V。

3 个答案:

答案 0 :(得分:1)

您不能在NULL值上调用方法。

您设置了

File configXmlFile = new File("");

然后重新分配值

configXmlFile = LanguageHandler.source;

您已经确认LanguageHandler.source为空,因此configXmlFile现在也为空。

如果您希望使用有效的对象,请在LanguageHandler.source中继续搜索问题。

答案 1 :(得分:1)

根据您的代码和注释System.out.println(LanguageHandler.source); //null ,这意味着LanguageHandler.source实际上是null。 然后,您在configXmlFile = LanguageHandler.source;中分配此值时,您的属性configXmlFile也具有null值。当您在null引用上调用method时,会得到NPE。 因此,您需要检查代码以正确初始化LanguageHandler.source变量。

答案 2 :(得分:1)

您正在对一个对象调用对象方法isFile(),该方法为null。

您分配

configXmlFile = LanguageHandler.source;

在上一行中,

的输出
System.out.println(LanguageHandler.source);

为空。因此,configXmlFile也为null,因为您为它分配了对LanguageHandler.source的引用。因此configXmlFile.isFile()会导致NullPointerException。