Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java序列化对象为空_Java_Serialization - Fatal编程技术网

Java序列化对象为空

Java序列化对象为空,java,serialization,Java,Serialization,我工作的产品使用了大量Java序列化。在该产品活跃的10年中,这一问题显然在今年之前从未发生过。今年发生了两次。我们已经两年没有发布新的软件版本了 问题是,一个序列化文件(只有一个特定的序列化文件,没有其他文件)偶尔会变为空。也就是说,它是正确的长度,但在十六进制编辑器中打开时,文件的内容完全是0。此序列化文件的编写方式与任何其他代码方式没有任何不同。我们几乎记录了所有内容,没有在受此问题影响的机器上抛出异常 我们当前的解决方法是,如果在读取文件时遇到StreamCorruptedExcepti

我工作的产品使用了大量Java序列化。在该产品活跃的10年中,这一问题显然在今年之前从未发生过。今年发生了两次。我们已经两年没有发布新的软件版本了

问题是,一个序列化文件(只有一个特定的序列化文件,没有其他文件)偶尔会变为空。也就是说,它是正确的长度,但在十六进制编辑器中打开时,文件的内容完全是0。此序列化文件的编写方式与任何其他代码方式没有任何不同。我们几乎记录了所有内容,没有在受此问题影响的机器上抛出异常

我们当前的解决方法是,如果在读取文件时遇到StreamCorruptedException,则忽略该文件并重写适当的版本。这仅仅是因为文件中的数据目前没有被使用,但我们希望在将来的某个时候实现对它的使用,要做到这一点,我们显然必须解决这个问题

以下是一个正确序列化的文件示例,以及出现问题的文件示例:

我的问题是

  • 以前有没有人遇到过这个问题
  • 一个人如何着手解决一个如此罕见和不可预测的问题

  • 您是否检查过是否有要序列化的内容?或者首先检查数据源。在第6.4节中,它指出流的语法要求它以流魔术和版本开始,对于流魔术和协议版本5,它将是0xACED005,这反映在上面的第一个文件中。如果没有要写入的数据,如果我没有弄错的话,它至少会写入流头。您创建ObjectOutputStream的方式有什么不寻常的地方吗?您能否显示创建它的代码,以及创建它所包装的输出流的代码?