我遇到一个奇怪的错误,我正在使用创建的变量,但随后出现了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。
答案 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。