2011-02-28 46 views
0

我被困在下面的運行時錯誤。我正在運行讀取xml文件作爲輸入的代碼,這是代碼:http://pastie.org/1617011。 XML:http://pastie.org/1617014java.lang.NullPointerException ..是否與xml文件結構有關?

Feb 28, 2011 4:07:29 PM org.apache.commons.digester.Digester peek 
WARNING: Empty stack (returning null) 
Feb 28, 2011 4:07:29 PM org.apache.commons.digester.Digester endElement 
SEVERE: End event threw exception 
java.lang.NullPointerException 
    at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:209) 
    at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:220) 
    at org.apache.commons.digester.Rule.end(Rule.java:257) 
    at org.apache.commons.digester.Digester.endElement(Digester.java:1345) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1871) 
    at QueryPerformer.main(QueryPerformer.java:127) 
Exception in thread "main" java.lang.NullPointerException 
    at org.apache.commons.digester.Digester.createSAXException(Digester.java:3363) 
    at org.apache.commons.digester.Digester.createSAXException(Digester.java:3389) 
    at org.apache.commons.digester.Digester.endElement(Digester.java:1348) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1871) 
    at QueryPerformer.main(QueryPerformer.java:127) 
Caused by: java.lang.NullPointerException 
    at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:209) 
    at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:220) 
    at org.apache.commons.digester.Rule.end(Rule.java:257) 
    at org.apache.commons.digester.Digester.endElement(Digester.java:1345) 
    ... 12 more 
+0

你的XML文件似乎沒問題。必須是文件訪問或Digester配置。 – reef

+0

是的,看起來像一個配置問題。發佈你的消化器配置和你試圖彈出的bean類。作爲猜測,我會說你的配置引用了你的bean類的一個不存在的屬性(儘管我希望在這種情況下會看到更多的描述性錯誤)。 –

+0

@Mark Peters @reef謝謝,我已經使用了沼氣解析器在另一個類中解析了另一個xml文件,並且它工作的很完美。我沒有設置任何消化器配置,只是將jar文件包含在classpath中。 – aneuryzm

回答

1

你肯定想在解析器配置設置來創建一個QueryDoc到返回的對象轉換爲QueryPerformer當你是正確的?此外,似乎您傳遞給addSetNext的方法引用的是QueryPerformer中的方法,而不是QueryDoc,這也是stacktrace似乎也指向的方法。