java.lang.ClassCastException: javax.xml.bind.JAXBElement [solved]

วันนี้มีปัญหากับเจ้าจาวาอีกแล้วครับ 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

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>