2012-03-08 12 views
2

今日は問題に陥っています。拡張クラスからロードされたクラスキャスト例外クラス

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

ここではクラスキャスト例外が発生します。

abc.ClassAは、プロジェクトビルドパスのjarファイルから参照されます。

別のクラスローダーで読み込まれているクラスについても読んでいますが、その問題はその可能性があります。

+0

完全なスタックトレースを表示してください。 – skaffman

+0

http://stackoverflow.com/questions/826319/classcastexception-when-casting-to-the-same-class – Jayan

+0

java.lang.ClassCastException:vss.YearMakeModelをvssにキャストすることはできません.YearMakeModel \t com.gm. 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)javax.servlet.http.HttpServlet.serviceで \t(HttpServlet.java:707)javax.servlet.http.HttpServlet.serviceで \t(HttpServlet.java:820) \tでweblogic.servlet .internal.StubSecurityHel per $ ServletServiceAction.run(StubSecurityHelper.java:227) –

答えて

1

あなたのクラスは2つの異なるクラスローダーによって読み込まれました。
私はあなたのjarファイルをクラスローダの階層に二度に位置して推測する:(戦争?)子供に一度、一度どこかで親パス内(のWebLogicのlibが?)と

最善の解決策は、クラスパスに一度だけjarファイルを入れています。

これが不可能な場合は、クラスローダーのクライアント優先/クライアント最終動作を変更できます。

ヒント:デバッグして問題のあるクラスローダーを簡単に取得できます。デバッガで問題のある行で停止してから比較してくださいrequest.getsession().getAttribute().getClass().getClassloader()abc.ClassA.class.getClassloader()

関連する問題