Java StreamCorruptedException

时间:2009-04-01 17:30:58

标签: java serialization

我有一个客户端和服务器应用程序,它使用TCP上的序列化传输消息。反序列化对象时出现以下错误:

有关原因的任何想法或分析此问题的可能后续步骤?

java.io.StreamCorruptedException: invalid stream header: 383D4649
    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    at java.io.ObjectInputStream.<init>(Unknown Source)
    at com.aqua.NmsApi.ResiliantTCPServer$ServerThread.run(ResiliantTCPServer.java:248)
    at java.lang.Thread.run(Unknown Source)

3 个答案:

答案 0 :(得分:1)

序列化数据头部的幻数有问题。您可能需要捕获序列化数据并自行查看。那个ascii流是'8 = FI'。

答案 1 :(得分:1)

有两个可能的原因:

  • 该流实际上已损坏(即您正在阅读的内容与您在另一端所写的内容不同)。在这种情况下,您应该在本地文件中写入每个内容(发出和接收),并进行比较。

  • 您正在使用的ObjectInputStream实现所需的幻数在两端都是不同的,例如因为您使用的是不同版本的Java基础包。这些常量在ObjectStreamConstants中声明,你应该检查它们。

答案 2 :(得分:0)

你是否每个套接字Input / OutputStream使用一个ObjectInput / OutputStream?在相同的输入/输出流上重新创建这些是导致此类错误的常见原因。