JAXBException UnmarshallerImpl及其任何超类对此上下文都是已知的



整理我的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)

有几件事可能会导致异常:

可能性#1

您的一个域对象持有UnmarshallerImpl的实例。我建议不要这样做。如果您觉得必须这样做,那么应该使用@XmlTransient对该字段/属性进行注释。

Possibilty#2

正如Ian Roberts的评论所建议的那样,您可能意外地编组了um变量的UnmarshallerImpl实例,而该实例包含了您的Unmarshaller实例。

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

最新更新