Маршаллер JAXB, генерирующий исключение NullPointerException при обновлении с Java 6 до Java 7 в XMLSerializer
Я искал сети для решения, но я в растерянности, поэтому я надеюсь, что кто-то может указать мне правильное направление здесь.
Мне было поручено обновить приложение, использующее JAXB2, до Java 7.
Поскольку я понимаю, что JVM 7 может запускать скомпилированный код Java 6, я попробовал это в первую очередь и обнаружил исключение нулевого указателя в классе com.sun.xml.internal.bind.v2.runtime.XMLSerializer.
Затем я перекомпилировал приложение в Java 7 и снова запустил ту же проблему.
Я использую следующий Oracle JDK: Java SE 7u51. Приложение также использует Spring OXM, который делегирует JAXB.
Вот стек Исключение Трассировки нулевого указателя, которое возникает, когда маршал вызывается в экземпляре JAXB Marshaller:
> 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)
Возможно, есть какая-то дополнительная конфигурация, которую мне не хватает?
Любая помощь приветствуется. Предоставит дополнительную информацию по мере необходимости.
Спасибо
1 ответ
Попробуйте включить эталонную реализацию для jaxb-impl, по крайней мере, это решило проблему для этого парня с той же ошибкой
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.7</version>
</dependency>