Java序列化对象为空
我工作的产品使用了大量Java序列化。在该产品活跃的10年中,这一问题显然在今年之前从未发生过。今年发生了两次。我们已经两年没有发布新的软件版本了 问题是,一个序列化文件(只有一个特定的序列化文件,没有其他文件)偶尔会变为空。也就是说,它是正确的长度,但在十六进制编辑器中打开时,文件的内容完全是0。此序列化文件的编写方式与任何其他代码方式没有任何不同。我们几乎记录了所有内容,没有在受此问题影响的机器上抛出异常 我们当前的解决方法是,如果在读取文件时遇到StreamCorruptedException,则忽略该文件并重写适当的版本。这仅仅是因为文件中的数据目前没有被使用,但我们希望在将来的某个时候实现对它的使用,要做到这一点,我们显然必须解决这个问题 以下是一个正确序列化的文件示例,以及出现问题的文件示例: 我的问题是Java序列化对象为空,java,serialization,Java,Serialization,我工作的产品使用了大量Java序列化。在该产品活跃的10年中,这一问题显然在今年之前从未发生过。今年发生了两次。我们已经两年没有发布新的软件版本了 问题是,一个序列化文件(只有一个特定的序列化文件,没有其他文件)偶尔会变为空。也就是说,它是正确的长度,但在十六进制编辑器中打开时,文件的内容完全是0。此序列化文件的编写方式与任何其他代码方式没有任何不同。我们几乎记录了所有内容,没有在受此问题影响的机器上抛出异常 我们当前的解决方法是,如果在读取文件时遇到StreamCorruptedExcepti
您是否检查过是否有要序列化的内容?或者首先检查数据源。在第6.4节中,它指出流的语法要求它以流魔术和版本开始,对于流魔术和协议版本5,它将是0xACED005,这反映在上面的第一个文件中。如果没有要写入的数据,如果我没有弄错的话,它至少会写入流头。您创建ObjectOutputStream的方式有什么不寻常的地方吗?您能否显示创建它的代码,以及创建它所包装的输出流的代码?