2012-09-06 29 views
1

我正在開發一個項目,我需要緩存一些需要這些類來實現可序列化的類。我收到的錯誤類似於這個「classcastexception:類demo.x.t.y.A(我序列化的任何類)不能轉換爲類demo.x.t.y.A」。我的意思是班級彼此完全相同。Java可序列化類生成的uuid不適用於ehcache

深入嘗試後,我發現程序工作,當我用java自己的類,實現serializable,而不是我的可序列化的類。我使用NetBeans網站中建議的插件在netbeans中生成了uuid。我很確定,原因是我自己生成的uuids,但爲什麼uuids不工作?生成uuids後,我不會對類進行任何更改。

在上面的serialversionUUID的java默認類中,有一個註釋完全類似於「/ **使用來自JDK 1.0.2的serialVersionUID來實現互操作性* /」。這是否意味着我應該使用jdk1.0.2生成uuid?我嘗試了很多東西,並接受任何解決方案。謝謝你的回覆。

爲了幫助可能遇到相同問題的開發人員,我有一個我不想使用的解決方案。您可以分別緩存每個變量,而不是緩存整個類。

既然我的第一個問題,對於我寫的問題的任何錯誤抱歉。

編輯: 我正在使用servlet。當我運行servlet時,它工作正常,但在另一次部署失敗後。

回答

0

該問題可能不是由串行版本的UID造成的,而是由類加載器問題造成的。您可能嘗試將類加載器類A(EHCache使用的類加載器)加載到類加載器B(您的Web應用程序的類加載器)加載的類中。

沒有更多的細節,很難告訴你應該做什麼,但要確保你的類可以被一個且只有一個類加載器加載。例如,如果該類既位於Web應用程序的類路徑(WEB-INF/lib)中,也位於服務器類路徑中,則可能是問題所在。

+0

要測試我是否使用ehcache犯了任何錯誤,我創建了具有非常簡單的類的新項目,但不認爲它們被複制到其他任何位置,但是我會查找類加載器問題。謝謝回覆。如果我取得進展,我會盡力給予反饋。 – user