2015-10-28 2 views
0

Я загрузил сериализованный объект Java из моего приложения сервлета. Когда я пытаюсь открыть его в Java коде я получаю:Недопустимый заголовок потока: 2C6D0005 - StreamCorruptedException

java.io.StreamCorruptedException: неверный заголовок потока: 2C6D0005

Я искал интернет и не смог найти какой-либо ссылки на код 2C6D0005.

Что может быть причиной этого?

Обратите внимание, что я использовал это приложение сервлета для загрузки многих других сериализованных объектов и не видел эту проблему раньше.

ответ

2

Это не код ошибки. Это первые 4 байта файла, который, по вашему мнению, является сериализованными данными, но это не так.

Байты должны быть AC ED 00 05, где первые два байта являются «магическими» и 00 05 - это версия.

См. Java Serialization Algorithm Revealed для формата файла, а также другую информацию и The Specification, если что-то еще неясно.

Edit:

Хорошо, я избавлю вас от неизвестности, так как я должен уйти с работы. Где-то кто-то неправильно читает байты. Если вы очистите старший бит AC и ED, вы получите ..... 2C и 6D. Вам следует поговорить с человеком, который написал соответствующий код, а затем исправить.

+0

2C6D0005 - первые 4 байта в загруженном сериализованном файле? и всегда должен быть ACED0005? – Bruce

+0

Почему ты меня спрашиваешь? У меня нет файла. – Kayaman

+0

Да, ваши загруженные байты не подтверждают проверку магического числа. – Kayaman

Смежные вопросы