Я прочесывал межотраслевое решение, но я в недоумении, поэтому я надеюсь, что кто-то может указать мне в правильном направлении.JAXB marshaller бросает NullPointerException при обновлении с Java 6 на Java 7 в XMLSerializer
Я была поставлена задача модернизировать приложение, которое делает использование JAXB2, для Java 7.
Так как я понимаю, JVM 7 может работать Java 6 скомпилированный код, это то, что я пытался первым, и столкнулся с Null Исключение указателя в классе com.sun.xml.internal.bind.v2.runtime.XMLSerializer.
Затем я перекомпилировал приложение на Java 7 и снова запустил эту же проблему.
Я использую следующие Oracle JDK: Java SE 7u51 приложение также использует Spring ОХМ, какие делегаты JAXB.
Вот трассировка стека Исключение нулевого указателя, что происходит, когда предводитель вызывается экземпляр JAXB ИАС:
> 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)
Возможно, есть некоторые дополнительные настройки мне не хватает?
Любая помощь приветствуется. По мере необходимости предоставит дополнительную информацию.
Спасибо
Какие банки вы имеете в своем классе пути или в WAR, EAR ? – mentallurg
@mentallurg решение jethroo, опубликованное ниже, работало. Похоже, что с Java 7 один раз должен явно ссылаться на эту ссылку, потому что с Java 6 она не требовалась. Благодаря! – anojan