我的主要类(class)是
public static void main(String[] args) throws JAXBException,
FileNotFoundException {
Class[] classes = new Class[5];
classes[0] = com.kk.AddressDetails.class;
classes[1] = com.kk.COUNTRY.class;
classes[2] = com.kk.ObjectFactory.class;
classes[3] = com.kk.Details.class;
classes[4] = com.kk.Districts.class;
JAXBContext context = JAXBContext.newInstance(classes);
Unmarshaller unmarshaller = context.createUnmarshaller();
JAXBElement<COUNTRY> unmarshal = (JAXBElement<COUNTRY>) unmarshaller
.unmarshal(new File("src\\countrydetails.xml"));
COUNTRY value = unmarshal.getValue();
System.out.println(value);
因此,在编译时,我在线程“main”java.lang.ClassCastException中遇到了此异常:com.kk.COUNTRY无法转换为javax.xml.bind.JAXBElement 在 main.kk.ClientApp.main(ClientApp.java:31)
最佳答案
自从您的 COUNTRY
类注释为 @XmlRootElement
这意味着它与根元素唯一关联,解码操作的结果将是 COUNTRY
COUNTRY c = (COUNTRY) unmarshaller.unmarshal(xml);
如果改为 COUNTRY
有一个或多个对应的@XmlElementDecl
注释或者您使用了 unmarshal
采取 Class
的方法参数,您将获得 JAXBElement
的实例
JAXBElement<COUNTRY> c = unmarshaller.unmarshal(xml, COUNTRY.class);
了解更多信息
关于java.lang.ClassCastException : com. kk.COUNTRY 无法转换为 javax.xml.bind.JAXBElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17336572/