JAXBException UnmarshallerImpl也不知道它的任何超类

时间:2013-06-27 10:11:45

标签: java jaxb marshalling

在编组我的Java代码时:

      Marshaller marshaller = context.createMarshaller();
      marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
      marshaller.marshal(um, new File("temp.xml"));

我遇到了这个例外:

Exception in thread "main" javax.xml.bind.JAXBException: class com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl nor any of its super class is known to this context.
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getBeanInfo(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(Unknown Source)
    at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(Unknown Source)
    at App.main(App.java:47)

2 个答案:

答案 0 :(得分:1)

有一些事情可能导致异常:

可能性#1

您的一个域对象持有UnmarshallerImpl的实例。我建议不要这样做。如果您认为必须使用@XmlTransient注释该字段/属性。

Possibilty#2

根据Ian Roberts的评论,您可能会意外地编组UnmarshallerImpl变量的um实例,其中包含Unmarshaller的实例。

答案 1 :(得分:-1)

也许你导入一些com.sun.xml.internal.bind而不是javax.xml.bind的资源