2

在编组我的 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)
4

2 回答 2

1

有几件事可能导致异常:

可能性 #1

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

可能性 #2

正如 Ian Roberts 评论所建议的那样,您可能会意外地编组变量的一个实例,UnmarshallerImplum实例持有您的Unmarshaller.

于 2013-06-27T11:06:19.733 回答
-1

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

于 2013-06-27T13:31:17.203 回答