Java 已更改类型的库类的反序列化

Java 已更改类型的库类的反序列化,java,deserialization,jfreechart,Java,Deserialization,Jfreechart,我想将JfreeChart 1.0.9更新为1.0.19。 在我的应用程序中,我通过在zip中序列化保存一些对象,并再次对其进行反序列化以加载。(简单) 现在,当我将JFreeChart更新到新版本时,JFreeChart的DataRange类给我带来了麻烦 我得到这个错误: Errror occured while importing a project: java.io.InvalidClassException: org.jfree.data.time.DateRange; incompa

我想将JfreeChart 1.0.9更新为1.0.19。 在我的应用程序中,我通过在zip中序列化保存一些对象,并再次对其进行反序列化以加载。(简单) 现在,当我将JFreeChart更新到新版本时,JFreeChart的DataRange类给我带来了麻烦

我得到这个错误:

Errror occured while importing a project: java.io.InvalidClassException: org.jfree.data.time.DateRange; incompatible types for field lowerDate
我分析了DateRange的类,也发现了问题

DateRange.java 1.0.9:

public class DateRange extends Range implements Serializable {

    /** For serialization. */
    private static final long serialVersionUID = -4705682568375418157L;

    /** The lower bound for the range. */
    private Date lowerDate;

    /** The upper bound for the range. */
    private Date upperDate;
...
DateRange.java 1.0.19:

public class DateRange extends Range implements Serializable {

    /** For serialization. */
    private static final long serialVersionUID = -4705682568375418157L;

    /** The lower bound for the range. */
    private long lowerDate;

    /** The upper bound for the range. */
    private long upperDate;
...
你应该看到问题所在。字段lowerDate和upperDate的类型从java.util.Date更改为long。 现在我无法再次反序列化现有项目。(对于新项目,这不是问题)

你有解决办法吗

我唯一的解决办法是修改源代码,并将以下方法添加到此处解释的DateRange.java中:

但我不想在可能的情况下修改jfreechart。

我自己解决了这个问题。 我更改了DateRange.java,并将lowerDate和upperDate的类型从long修改为Date。 (这不是一个很好的解决方案)

对于readObject,它不起作用,因为当我反序列化其他对象时,会得到一个EOFEException

当有人有更好的解决方案时,我想听听

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
}