Java XML空指针异常

时间:2014-06-26 20:36:37

标签: java xml file jaxb unmarshalling

我有一个非常大的XML文件(大约29 GB),其中每个其他备用行都是一个包含大约500个属性的XML。我按顺序读取文件并将行发送到unmarshaller,从而创建一个对象。

一段时间后我得到了以下异常。

java.lang.NullPointerException  at com.sun.xml.internal.stream.Entity$ScannedEntity.close(Entity.java:439)

以下接受该行并解组它。

sCurrentLine = br.readLine();
idDetails = IDUnmarshal.IDUnmarshall(sCurrentLine);
idObjectList.add(idDetails);

这是完整的堆栈跟踪

     java.lang.NullPointerException at com.sun.xml.internal.stream.Entity$ScannedEntity.close(Entity.java:439)
     at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1404)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)

            at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
            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 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
            at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
            at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
            at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:184)

1 个答案:

答案 0 :(得分:0)

您是否认为您可能正在阅读.readLine()中不存在的行;调用并因此在其中存储一个由TDUnmarshall方法使用并抛出错误的空值?