исключение нулевого указателя на переменную класса - PullRequest
0 голосов
/ 29 августа 2018

У меня странная ошибка, я использую созданную мной переменную, но затем делаю ошибку исключения нулевого указателя. Вот мой код:

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)

Строка 85 класса ReadXMLFile - это мой System.out.println("conf : " + configXmlFile.isFile());

Я не понимаю, почему у меня возникает эта ошибка, она должна просто возвращать false.

Заранее спасибо за помощь !!

V.

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Согласно вашему коду и комментариям System.out.println(LanguageHandler.source); //null , что означает LanguageHandler.source на самом деле null. Когда вы затем присваиваете это значение в configXmlFile = LanguageHandler.source;, ваше свойство configXmlFile также имеет значение null. И когда вы вызываете метод по ссылке null, вы получаете NPE. Поэтому вам нужно проверить свой код, чтобы правильно инициализировать переменную LanguageHandler.source.

0 голосов
/ 29 августа 2018

Вы вызываете метод объекта isFile () для объекта, который является нулевым.

Вы назначаете

configXmlFile = LanguageHandler.source;

А в предыдущей строке вы видите, что вывод

System.out.println(LanguageHandler.source);

равно нулю. Итак, configXmlFile также имеет значение null, так как вы присвоили ему ссылку на LanguageHandler.source. Поэтому configXmlFile.isFile () приводит к исключению NullPointerException.

0 голосов
/ 29 августа 2018

Вы не можете вызывать методы со значением NULL.

Вы установили

File configXmlFile = new File("");

А затем переназначить значение

configXmlFile = LanguageHandler.source;

Вы уже подтвердили, что LanguageHandler.source равно нулю, поэтому configXmlFile теперь также равно нулю.

Если вы ожидаете действительный объект, возобновите поиск проблемы в LanguageHandler.source.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...