在编组我的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)
答案 0 :(得分:1)
有一些事情可能导致异常:
可能性#1
您的一个域对象持有UnmarshallerImpl
的实例。我建议不要这样做。如果您认为必须使用@XmlTransient
注释该字段/属性。
Possibilty#2
根据Ian Roberts的评论,您可能会意外地编组UnmarshallerImpl
变量的um
实例,其中包含Unmarshaller
的实例。
答案 1 :(得分:-1)
也许你导入一些com.sun.xml.internal.bind而不是javax.xml.bind的资源