Page 1 of 1

NullPointerException in WML package with docx4j-2.8.1

PostPosted: Thu Nov 29, 2012 8:53 pm
by sareth
hello, I have one user of my soft who encounter following problem when application loads a docx file:

Code: Select all
java.lang.NullPointerException
      at org.docx4j.wml.Id.hashCode(Id.java:129)
      at java.util.HashMap.put(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.AssociationMap.addInner(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.recordInnerPeer(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StructureLoader.startElement(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(Unknown Source)
      at com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.BinderImpl.associativeUnmarshal(Unknown Source)
      at com.sun.xml.internal.bind.v2.runtime.BinderImpl.unmarshal(Unknown Source)
      at org.docx4j.openpackaging.parts.JaxbXmlPartXPathAware.unmarshal(JaxbXmlPartXPathAware.java:171)
      at org.docx4j.openpackaging.io.LoadFromZipNG.getRawPart(LoadFromZipNG.java:560)
      at org.docx4j.openpackaging.io.LoadFromZipNG.getPart(LoadFromZipNG.java:429)
      at org.docx4j.openpackaging.io.LoadFromZipNG.addPartsFromRelationships(LoadFromZipNG.java:352)
      at org.docx4j.openpackaging.io.LoadFromZipNG.process(LoadFromZipNG.java:245)
      at org.docx4j.openpackaging.io.LoadFromZipNG.get(LoadFromZipNG.java:193)
      at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:301)
      at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:245)
      at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:195)
      at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:178)
      at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:172)


I searched forum and saw that link:
http://www.docx4java.org/forums/data-binding-java-f16/npe-in-customxmlbinding-with-old-jaxb-2-1-2-t459.html

so I downloaded last version of docx4j and built it with the following patch in org.docx4j.wml.Id file:
Code: Select all
public int hashCode() {
         
          if (val==null) {
             return Math.abs(new java.util.Random().nextInt());             
          }
          return val.intValue();         
       }


I can't compile it properly without change restriction access to rt.jar, and on top of that, after merging with another docx, the resulting file is corrupted...
for example in org.merlin.io.DOMSerializerEgine.java, it raises an error because of restricted access to rt.jar, when using JavaSE-1.6 system library:
Code: Select all
String ianaEncoding = com.sun.org.apache.xerces.internal.util.EncodingMap.getJava2IANAMapping(javaEncoding);


can we consider it as a bug and is it possible to include patch in next nighty build please ?
best regards

Re: NullPointerException in WML package with docx4j-2.8.1

PostPosted: Thu Nov 29, 2012 11:35 pm
by jason
Can you have your user use a more recent version of JAXB?

Using a non-broken JAXB is the correct fix; the NPE in Id.hashCode is symptomatic of wider problems caused by that dodgy JAXB

You ought to be able to build docx4j. If you can't, this is a distinct issue which you might like to raise, and if so, in a thread of its own please, explaining how you are trying to build (maven, ant, or in an IDE eg Eclipse).

Re: NullPointerException in WML package with docx4j-2.8.1

PostPosted: Fri Nov 30, 2012 5:46 pm
by sareth
Hello Jason, I delivered last version of JAXB found on hosting site (2.2.6)

I talk about compilation because when I compile it, merging two docx files gives me a corrupted resulting file, even if build was successfull.

I'm going to open a new thread on this compilation point.