反序列化时本地类不兼容

时间:2017-11-08 10:12:04

标签: java deserialization

我试图读取和写入.ser文件的对象。该对象由另一个对象和一个整数组成。 像这样:

public class  Ranking implements Serializable{
    private static ArrayList<Acabada> partides = new ArrayList<Acabada>();
    private int tipus_ordenacio;
}

使用序列化时,代码似乎有效。当我打开生成的文件时,会出现一些不可靠的东西。 但是在写(反序列化)时,我得到了这样的信息:

  

tipus ordenacioo 1java.io.InvalidClassException:domain.Ranking;本地类不兼容:stream classdesc serialVersionUID = 5620111485391998837,本地类serialVersionUID = -3886134201979592842

这是我用来反序列化的代码。

public void readFromFile() {


        try {
            FileInputStream fis = new FileInputStream("ranking.ser");

            ObjectInputStream ois = new ObjectInputStream(fis);
            domain.Ranking ranking = (domain.Ranking) ois.readObject();
           
            ois.close();
            fis.close();

   }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }


    }

我做错了什么? 谢谢!

1 个答案:

答案 0 :(得分:0)

您应该声明serialVersionUID

查看此答案What is a serialVersionUID and why should I use it?