2016-03-02 57 views
0

我想將我的JfreeChart 1.0.9更新到1.0.19。 在我的應用程序中,我通過序列化在zip中保存了一些對象並加載它,然後我再次反序列化它。 (簡單) 現在,當我將JFreeChart更新爲新版本時,JfreeChart的DataRange類給我帶來了麻煩。改變類型的Libary類的反序列化

我得到這個錯誤:

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這裏解釋:Serialization

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

但我不希望修改jfreechart的時候有可能。

回答

0

我自己解決了。 我更改了DateRange.java並將longDate和upperDate的類型從long更改爲Date。 (這不是很好的解決方案)

使用readObject它不工作,因爲我反序列化其他對象時,我得到一個EOFException。

當有人有更好的解決方案,我想聽聽它。