วันนี้มีปัญหากับเจ้าจาวาอีกแล้วครับ java.lang.ClassCastException: javax.xml.bind.JAXBElement ตัวแดงเชียวล่ะ exception ตัวนี้เกิดขึ้นเนื่องจาก method unmarshal(…) return JAXBElement กับมาไม่ใช่ Object ที่เรา casting มันก็เลยฟ้องข้อผิดพลาดนี้ขึ้นมา
วิธีแก้ก็คือ เปลี่ยนจาก
MyObject myObj = (MyObject)u.unmarshal(new FileInputStream(“foo.xml”));
เป็นแบบนี้แทนครับ
MyObject myObj = (MyObject)((JAXBElement)u.unmarshal(new FileInputStream(“foo.xml”))).getValue();
หรือถ้าวิธีนี้ไม่ได้ผลก็ลองใช้
Object o = u.unmarshal(new FileInputStream(“foo.xml”));
System.out.println(o.getClass().getName);
เพื่อจะดูว่ามัน return object อะไรกลับมาครับ
ที่มาของวิธีแก้ปัญหาครับ : velocityreviews.com