2011-04-07 186 views
3

我正在使用Oracle WebLogic,Netbeans 6.9.1。 我有下面的代碼行:Java:拋出自身異常(?)

Query query=entityManager.createNamedQuery("Items.findById").setParameter("id", Integer.parseInt((String) request.getParameter("id"))); 
Items it=(Items) query.getSingleResult(); 

,他們拋出一個異常:

java.lang.ClassCastException: entity.Items cannot be cast to entity.Items 

即使這似乎是不可能的,我看到了類似的問題對SO:here 作者還沒有公佈的解決方案,但其中一位參與者對不同的班級裝載者作了很好的假設。

同時如果我使用getResultList,然後用它在JSP工作,它工作正常。但我不能使用servlet代碼進行投射。

我該如何解決這個問題在weblogic?

回答

0

這確實看起來像一個類加載問題。

This earlier answer of mine說明如何驗證這個假設。

不幸的是,類加載的問題是困難和痛苦。沒有簡單的解決方法,只是試圖瞭解哪些類加載器以何種順序加載哪些類,並嘗試使用類加載器,類和jar來消除該問題。此外,在出現此錯誤之前,分析應用程序中的最新更改 - 這些可以提供瞭解根本原因的關鍵。

我不熟悉的WebLogic類加載機制,所以很遺憾我不能給你任何更具體的建議。