我有一個奇怪的錯誤,我使用了一個我創建的變量,但隨后我產生了一個空指針異常錯誤。這是我的代碼:public class ReadXMLFile {// Initialize loggerprivate 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.NullPointerExceptionat 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。在此先感謝您的幫助?。?
3 回答

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
您正在一個對象上調用對象方法 isFile(),即為 null。
你分配
configXmlFile = LanguageHandler.source;
在上一行你看到,輸出
System.out.println(LanguageHandler.source);
一片空白。因此,configXmlFile 也為空,因為您已將其分配給 LanguageHandler.source 的引用。因此 configXmlFile.isFile() 會導致 NullPointerException。

DIEA
TA貢獻1820條經驗 獲得超3個贊
您不能對 NULL 值調用方法。
你設置
File configXmlFile = new File("");
然后重新賦值
configXmlFile = LanguageHandler.source;
你已經確認它LanguageHandler.source
是空的,所以configXmlFile
現在也是空的。
如果您期望一個有效的對象,請繼續在 中搜索問題LanguageHandler.source
。

BIG陽
TA貢獻1859條經驗 獲得超6個贊
根據您的代碼和注釋System.out.println(LanguageHandler.source); //null
,這意味著LanguageHandler.source
實際上是null
. 當你再分配這個值時,configXmlFile = LanguageHandler.source;
你的屬性configXmlFile
也有null
值。當你在null
引用上調用方法時,你會得到 NPE。因此,您需要檢查代碼以正確初始化LanguageHandler.source
變量。
添加回答
舉報
0/150
提交
取消