Java 已更改类型的库类的反序列化
我想将JfreeChart 1.0.9更新为1.0.19。 在我的应用程序中,我通过在zip中序列化保存一些对象,并再次对其进行反序列化以加载。(简单) 现在,当我将JFreeChart更新到新版本时,JFreeChart的DataRange类给我带来了麻烦 我得到这个错误: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
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{
}