Исключение: java.io.StreamCorruptedException: недопустимый код типа: 00

Когда я запрашиваю объект через интерфейс EJB, под консолью все в порядке, но переключаюсь на запрос из Swing, он выдает это исключение.

Исключение:

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)

person Aaron    schedule 10.02.2010    source источник
comment
Пожалуйста, покажите нам соответствующий код. И да, не забудьте включить соответствующую трассировку стека.   -  person Adeel Ansari    schedule 10.02.2010


Ответы (2)


Оказывается, это ошибка JRE. Так как у моей консоли env 1.5, а у Swing 1.6:

Ссылка на ошибку:

Нам нужно передать этот аргумент в JVM

-Dsun.lang.ClassLoader.allowArraySyntax=истина

person Aaron    schedule 10.02.2010
comment
Я ничего не вижу в этой ошибке о java.io.StreamCorruptedException: недопустимый код типа: 00. - person user207421; 18.10.2011

Это исключение генерируется, когда класс, соответствующий сериализованному объекту, найденному JVM, имеет тот же serialVersionUid, что и сериализованный класс, но на самом деле является другой версией (т. е. в класс были внесены изменения без изменения идентификатора версии).

Убедитесь, что у вас есть соответствующие файлы jar/class в пути к классу?

person drevicko    schedule 07.11.2012
comment
Насколько я знаю, это не правильно. Вы либо получаете ненайденный класс, если класс не находится в пути к классам, либо InvalidClassException, если это другая версия. Можете ли вы показать пример? - person Peter; 18.07.2013
comment
Боже, это было давным-давно... Попробуйте и посмотрите, что получится. Я помню, что попытка десериализовать объект, для которого не был найден класс (или, возможно, класс с тем же именем, но не таким же?? Например: другая версия), вызвала StreamCorruptedException. Не могу вспомнить, была ли там часть с кодом типа 00, но я думаю, что да. Я разместил этот ответ здесь, так как мне было сложно его отследить, и Google показал мне этот вопрос по пути :) - person drevicko; 19.07.2013
comment
Для справки, это были несоответствующие версии файлов jar, которые вызвали ошибку для меня. Различные версии класса имели один и тот же идентификатор сериализации, поэтому вместо исключения для несоответствующих версий возникало исключение StreamCorruptedException. - person drevicko; 23.06.2014