2012-03-08 56 views
2

今天遇到問題。classcast異常來自擴展類加載類

abc.ClassA a = (abc.ClassA) request.getsession().getAttribute(); 

我在這裏得到了classcast異常。

abc.ClassA是從項目構建路徑中的jar文件引用的。

我也讀過關於正在加載不同類加載器的類,問題可能是becoz。

+0

向我們展示完整的堆棧跟蹤。 – skaffman 2012-03-08 10:10:26

+0

http://stackoverflow.com/questions/826319/classcastexception-when-casting-to-the-same-class – Jayan 2012-03-08 10:12:58

+0

java.lang.ClassCastException:vss.YearMakeModel無法在com.gm上轉換爲vss.YearMakeModel \t。 nvls.controller.WidgetController.getMake(WidgetController.java:271) \t在com.gm.nvls.controller.WidgetController.doPost(WidgetController.java:83) \t在com.gm.nvls.controller.WidgetController.doGet( WidgetController.java:423) \t在javax.servlet.http.HttpServlet.service(HttpServlet.java:707) \t在javax.servlet.http.HttpServlet.service(HttpServlet.java:820) \t在weblogic.servlet .internal.StubSecurityHel每$ ServletServiceAction.run(StubSecurityHelper.java:227) – 2012-03-08 10:17:02

回答

1

你的課由兩個不同的類加載器加載。
我猜你的罐子位於兩次的類加載器層次:(?戰爭),一旦某處父路徑(?的WebLogic LIB),另一次在一個孩子

最好的解決辦法是在類路徑中放一個罐子只有一次。

如果這是不可能的,您可以嘗試更改類加載器的客戶端優先/客戶端最後行爲。

提示:你可以調試它,並很容易地得到有問題的類加載器。在調試器中停止問題行,然後比較request.getsession().getAttribute().getClass().getClassloader()abc.ClassA.class.getClassloader()