Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.io.NotSerializableException:java.lang.reflect.Constructor_Java_Swing_Serialization_Stream_Jtable - Fatal编程技术网

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

java.io.NotSerializableException:java.lang.reflect.Constructor,java,swing,serialization,stream,jtable,Java,Swing,Serialization,Stream,Jtable,我想从我的JTable中序列化一个模型,不幸的是我得到了一个NotSerializableException。 我所有的字段都是可序列化的,我不知道哪里出了问题 public class Sauvegarde extends AbstractAction implements Serializable { private static final long serialVersionUID = 1L; public DefaultTableModel model; p

我想从我的
JTable
中序列化一个模型,不幸的是我得到了一个
NotSerializableException
。 我所有的字段都是可序列化的,我不知道哪里出了问题

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) {
String[]columnTitles={“A”、“B”、“C”、“D”、“E”};
字符串[]CellusVide={“”、“”、“”、“”、“”、“”};
字符串[][]行数据=新字符串[nombreDeLignes][5];
dfm=新的DefaultTableModel(columnTitles,0);
//table.setCellSelectionEnabled(真);
对于(int i=0;i
没有魔法

您应该检查对象层次结构中的所有类及其字段。 所有字段和类都应该是可序列化的或基本的

父级可能不可序列化,但必须具有默认构造函数

如果上述条件是正确的,它应该会工作。

没有魔法

您应该检查对象层次结构中的所有类及其字段。 所有字段和类都应该是可序列化的或基本的

父级可能不可序列化,但必须具有默认构造函数



如果上述条件为真,它应该可以工作。

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

在某个地方,您直接或间接拥有非瞬态数据构造函数类型的成员,如异常所述,它是不可序列化的。找到它并使其成为瞬态的,或者将其消除。构造函数是不可序列化的。

答案在于:您的模型引用了java.lang.reflect.Constructor的一个实例,而这个类是不可序列化的。Désoléje ne comprend pas,DefaultTableModel estune classe Serializable d'après la doc…表模型存储项模型的向量。您在模型中存储的是什么类型的项?您确定这些项可以正确序列化吗?也许可以发布一些您用于项模型的类的代码?我只在模型中存储字符串。我受此链接启发:如果您只存储strings,您不会得到异常。向我们展示创建和填充模型的代码,以及异常的完整堆栈跟踪。并始终在finally块中关闭流。答案是:您的模型引用java.lang.reflect.Constructor的实例,并且该类不可序列化。Désoléje ne comprend pas,DefaultTableModel est une classe Serializable d'après la doc…表模型存储项模型的向量。您在模型中存储的是什么类型的项?您确定这些项是可正确序列化的吗?可能会发布一些您用于项模型的类的代码?我只在模型中存储字符串。我受此链接启发:如果您只读取字符串,您不会得到异常。向我们展示创建和填充模型的代码,以及异常的完整堆栈跟踪。并始终在finally块中关闭流。当然,正如您所看到的,我这样做了,这个类只包含1个字段,这个类是可序列化的。在正常情况下,异常会通知我是哪个类ss有冲突,但这里的异常不说什么。@superstarz好的,然后一步一步。这个格栅是什么。dfm?@superstarz用假格栅试过你的例子,有字段public static DefaultTableModel dfm;我在一个静态块中初始化它。一切正常。你的例子缺少一些细节。什么是nombreDeLignes?int number ofLines=5或其他?你确定没有代码覆盖dfm吗?当然,我这样做了,正如你所看到的,这个类只包含一个字段,这个类是可序列化的。在正常情况下,异常会通知我哪个类冲突,但这里异常不会说什么。@superstarz好的,然后一步一步。这是什么网格。dfm?@superstarz用fake Grill试过你的例子,它有一个字段public static DefaultTableModel dfm;我在一个静态块中初始化了它。一切正常。你的例子缺少一些细节。什么是nombreDeLignes?int numberOfLines=5,或者其他什么?你确定没有代码覆盖dfm吗?