2010-02-10 80 views
0

當我通過EJB接口查詢實體時,在控制檯下它是可以的,但切換到從Swing查詢它會拋出此異常。異常:java.io.StreamCorruptedException:無效的類型代碼:00

例外:

java.rmi.UnmarshalException: failed to unmarshal MY_ENTITY****; nested exception is: 
    java.io.StreamCorruptedException: invalid type code: 00 
    at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:219) 
    at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:224) 
    at ***.****_6ndxy4_EOImpl_922_WLStub.getProductInformation(Unknown Source) 
    at MY_CLASS****.getProductInformation(*****.java:460) 
    at ******$5.run(OrigBlotter.java:318) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: java.io.StreamCorruptedException: invalid type code: 00 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356) 
    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1642) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323) 
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) 
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) 
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
    at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:195) 
    at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:565) 
    at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:191) 
    at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62) 
    at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:217) 
+0

請告訴我們相關的代碼。是的,不要忘記包含相關的堆棧跟蹤。 – 2010-02-10 04:47:45

回答

0

當與JVM找到的序列化對象相對應的類具有與序列化類相同的serialVersionUid時,會生成此異常,但實際上是不同的版本(即:更改是在不改變版本ID的情況下對該類進行編譯)。

檢查在類路徑中是否有相關的jar/class文件?

+0

據我所知,這是不正確的。如果類不在類路徑中,您可以獲取未找到的類;如果類不同,則獲取InvalidClassException。你能舉一個例子嗎? – Peter 2013-07-18 13:19:54

+0

天哪,那是很久很久以前的事。試試看看會發生什麼。我記得試圖對沒有找到類的對象進行反序列化(或者可能是一個具有相同名稱但不相同的類,例如:不同版本)會導致StreamCorruptedException異常。不能回想起「類型代碼00」部分是否也存在,但我認爲是。我把這個答案放在這裏,因爲我很難跟蹤和谷歌一路向我顯示這個問題:) – drevicko 2013-07-19 10:47:44

+0

爲了記錄,這是錯誤的jar文件版本,導致我的錯誤。不同的類版本具有相同的序列化uid,因此是StreamCorruptedException,而不是用於不匹配版本的異常。 – drevicko 2014-06-22 20:42:05

相關問題