У меня странная ошибка, я использую создаваемую мной переменную, но затем выхожу ошибку исключения нулевого указателя. Вот мой код:
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.
Заранее спасибо за помощь !!
В.
Если configXmlFile - это null, как вы предложили в выводе программы, как вы ожидаете, что ваша программа пропустит NullPointerException?




Вы не можете вызывать методы для значения NULL.
Вы устанавливаете это
File configXmlFile = new File("");
А затем переназначьте значение
configXmlFile = LanguageHandler.source;
Вы уже подтвердили, что значение LanguageHandler.source равно нулю, поэтому значение configXmlFile теперь также равно нулю.
Если вы ожидаете наличие действительного объекта, возобновите поиск проблемы в LanguageHandler.source.
Согласно вашему коду и комментариям System.out.println(LanguageHandler.source); //null
, что означает, что LanguageHandler.source на самом деле является null.
Когда вы затем назначаете это значение в configXmlFile = LanguageHandler.source;, ваше свойство configXmlFile также имеет значение null. И когда вы вызываете метод по ссылке null, вы получаете NPE.
Поэтому вам нужно проверить свой код, чтобы правильно инициализировать переменную LanguageHandler.source.
Вы вызываете метод объекта isFile () для объекта, который имеет значение NULL.
Вы назначаете
configXmlFile = LanguageHandler.source;
А в предыдущей строке вы видите, что вывод
System.out.println(LanguageHandler.source);
нулевой. Итак, configXmlFile также имеет значение null, поскольку вы присвоили ему ссылку на LanguageHandler.source. Поэтому configXmlFile.isFile () приводит к исключению NullPointerException.
null pointer exceptionозначает, что вы пытаетесь получить доступ к тому, чего не существует. Скорее всего, это означает, чтоconfigXmlFileне был создан / создан должным образом. Сначала проверьте это.