猿问

类变量上的空指针异常

我有一个奇怪的错误,我使用了一个我创建的变量,但随后我产生了一个空指针异常错误。这是我的代码:


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。


在此先感谢您的帮助!!


手掌心
浏览 148回答 3
3回答

神不在的星期二

您正在一个对象上调用对象方法 isFile(),即为 null。你分配configXmlFile = LanguageHandler.source;在上一行你看到,输出System.out.println(LanguageHandler.source);一片空白。因此,configXmlFile 也为空,因为您已将其分配给 LanguageHandler.source 的引用。因此 configXmlFile.isFile() 会导致 NullPointerException。

DIEA

您不能对 NULL 值调用方法。你设置File configXmlFile = new File("");然后重新赋值configXmlFile = LanguageHandler.source;你已经确认它LanguageHandler.source是空的,所以configXmlFile现在也是空的。如果您期望一个有效的对象,请继续在 中搜索问题LanguageHandler.source。

BIG阳

根据您的代码和注释System.out.println(LanguageHandler.source); //null,这意味着LanguageHandler.source实际上是null. 当你再分配这个值时,configXmlFile = LanguageHandler.source;你的属性configXmlFile也有null值。当你在null引用上调用方法时,你会得到 NPE。因此,您需要检查代码以正确初始化LanguageHandler.source变量。
随时随地看视频慕课网APP

相关分类

Java
我要回答