java.io.NotSerializableException:java.lang.reflect.Constructor

时间:2013-01-20 16:26:33

标签: java swing serialization stream jtable

我想从我的JTable序列化一个模型,不幸的是我得到了NotSerializableException。 我的所有字段都是Serializable,我无法理解这里的问题在哪里。

public class Sauvegarde extends AbstractAction implements Serializable {

    private static final long serialVersionUID = 1L;
    public DefaultTableModel model;

    public Sauvegarde(String string) {
        super(string);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        sauve_actionPerformed(e);
        System.exit(0);

    }

    public void sauve_actionPerformed(ActionEvent e) {
        this.model = Grille.dfm;
        try {

            // Serialisation
            FileOutputStream fos = new FileOutputStream("sauve.tmp");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(model);
            oos.close();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

这是我创建JTable和模型的类:

    String[] columnTitles = { "A", "B", "C", "D", "E"};
    String[] cellulesVide = { "", "", "", "", ""};
    String[][] rowData = new String[nombreDeLignes][5];

    dfm = new DefaultTableModel(columnTitles,0);


    //table.setCellSelectionEnabled(true);


    for (int i = 0 ; i < nombreDeLignes ; i++)
    {   
        dfm.addRow(cellulesVide);
    }


    table = new JTable(dfm) {

2 个答案:

答案 0 :(得分:1)

没有魔力。

您应该检查对象层次结构中的所有类及其字段。 所有字段和类都应该是Serializable或primitive。

父可能不是可序列化的,但它必须具有默认构造函数。

上述条件属实,应该有效。

答案 1 :(得分:0)

某处你直接或间接拥有一个类型为Constructor的非瞬态数据成员,它不是Serializable,正如异常所说。找到它并使其成为瞬态或消除它。构造函数不是可序列化的。