JAXB marshaller throwing NullPointerException when upgrading from Java 6 to Java 7 in XMLSerializer

StackOverflow https://stackoverflow.com/questions/21393323

Question

I've scoured the interwebs for a solution but I am at a loss so I'm hoping someone can point me in the right direction here.

I've been tasked with upgrading an app, which makes use of JAXB2, to Java 7.

Since I understand JVM 7 can run Java 6 compiled code, that's what I tried first, and encountered a Null Pointer Exception in the com.sun.xml.internal.bind.v2.runtime.XMLSerializer class.

I then recompiled the app in Java 7 and ran again and same issue.

I am using following Oracle JDK: Java SE 7u51 The app also uses Spring OXM which delegates to JAXB.

Here is the stack Trace of Null Pointer Exception that occurs when marshal is called on the JAXB Marshaller instance:

> java.lang.NullPointerException    at
> com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:627)
>   at
> com.sun.xml.internal.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:108)
>   at
> com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:343)
>   at
> com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:685)
>   at
> com.sun.xml.internal.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:54)
>   at
> com.sun.xml.internal.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:157)
>   at
> com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:144)
>   at
> com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:343)
>   at
> com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:582)
>   at
> com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:325)
>   at
> com.sun.xml.internal.bind.v2.runtime.property.ArrayReferenceNodeProperty.serializeListBody(ArrayReferenceNodeProperty.java:103)
>   at
> com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:144)
>   at
> com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:343)
>   at
> com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:582)
>   at
> com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:325)
>   at
> com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:483)
>   at
> com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:308)
>   at
> com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:236)
>   at
> org.springframework.oxm.jaxb.Jaxb2Marshaller.marshal(Jaxb2Marshaller.java:648)

Perhaps there is some additional configuration I am missing?

Any help appreciated. Will provide any more info as required.

Thank you

Was it helpful?

Solution

Try to include a reference implementation for the jaxb-impl, at least it solved the problem for this guy with the same error

<dependency>
   <groupId>com.sun.xml.bind</groupId>
   <artifactId>jaxb-impl</artifactId>
   <version>2.2.7</version>
</dependency>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top