2010-07-20 53 views
3

我需要在這個問題上的嚴重幫助。可能是它的基礎,但是,我無法弄清楚。我有一個會話EJB,其中一個方法返回一個枚舉數組,即BlndItmTmMthd數組。當我在客戶端調用方法時,它給了我一個ClassCastException獲取java.lang.ClassCastException:[Ljava.lang.Object;不能投到[LBlndItmTmMthd

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LBlndItmTmMthd 

調試時,我已發現,EJB方法被正確地通過調用BlndItmTmMthd.values()返回BlndItmTmMthd陣列。我無法找出原因。任何想法都會有所幫助。從下面
AgreementSession.java評論

添加的內容是EJB接口包含以下方法聲明:

BlndItmTmMthd[] getAllBlendedItemTimingMethods(); 

AgreementSessionEJB.java是實現它的EJB。現在

public BlndItmTmMthd[] getAllBlendedItemTimingMethods() { 
    BlndItmTmMthd[] blendedItemTmingMethods = BlndItmTmMthd.values(); 
    return blendedItemTmingMethods; 
} 

,在客戶端,當我調用EJB方法用下面的代碼:

BlndItmTmMthd[] _timingMethods = 
      getLoanScheduleSetupSession().getAllBlendedItemTimingMethods(); 

我得到的運行時異常。

+2

請張貼一些代碼:我幫不了你寫的東西。 – 2010-07-20 13:32:54

+0

AgreementSession.java是包含以下方法聲明的EJB接口。 BlindItmTmMthd [] getAllBlendedItemTimingMethods(); AgreementSessionEJB.java是實現它的EJB。公共BlndItmTmMthd [] getAllBlendedItemTimingMethods(){ BlndItmTmMthd [] blendedItemTmingMethods = BlndItmTmMthd.values(); return blendedItemTmingMethods; } 現在,在客戶端側,當我調用EJB方法用下面的代碼, BlndItmTmMthd [] _timingMethods = getLoanScheduleSetupSession()getAllBlendedItemTimingMethods(); 我得到那個運行時異常。 – rajshekhar 2010-07-20 13:43:57

+0

我無法格式化代碼! – rajshekhar 2010-07-20 13:45:26

回答

1

的「[L」在你的錯誤告訴你問題 - Java的失敗投的對象數組(即一個Object [])來BlndItmTmMthds的數組(BlndItmTmMthd []) 。

BlndItmTmMthd真的是java.lang.Enum嗎?

+0

是的,BlndItmTmMthd是一個包含三個值的枚舉。 – rajshekhar 2010-07-21 06:15:20

0

鑑於錯誤意味着無法將類型爲java.lang.Object的對象轉換爲Enum類,我相信在接收到來自EJB的響應時,序列化和反序列化過程會失敗客戶端。

有一對夫婦的事情,你可能想看看:

  • 爲枚舉類BlndItmTmMthd在同一類的,或者是裝兩次?
  • EJB的生成的存根控件是否包含對Enum類或java.lang.Object的引用?
+0

需要檢查由您提及的發行。 – rajshekhar 2010-07-21 06:14:50

0

我假定你有權訪問服務器和客戶端代碼。要跟蹤下來這個問題,你應該向Object的道路上所有的地方從BlndItmTmMthd插入表單

logger.info(array.getClass().getCanonicalName()); 

的日誌記錄語句。那麼你至少可以說轉換髮生在哪一點。