Java MyClass NotSerializableException

Java MyClass NotSerializableException,java,serialization,vaadin10,notserializableexception,Java,Serialization,Vaadin10,Notserializableexception,我创建了一个名为Components的类。它有一些组件,如按钮,文本区域,垂直布局,等等。我没有使这个类可序列化,因为我不需要,但当我启动服务器(我使用Tomcat)时,我得到以下错误: java.io.NotSerializableException:com.vaadin13.Components 位于java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 位于java.io.ObjectOutputStrea

我创建了一个名为
Components
的类。它有一些组件,如
按钮
文本区域
垂直布局
,等等。我没有使这个类可序列化,因为我不需要,但当我启动服务器(我使用Tomcat)时,我得到以下错误:

java.io.NotSerializableException:com.vaadin13.Components
位于java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
位于java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1174)
位于java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
位于java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
位于java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1178)
位于java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
位于java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
位于java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1178)
位于java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1174)
位于java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
位于java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
位于java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1178)
位于java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
位于java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
位于java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1178)
位于java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
位于java.util.ArrayList.writeObject(ArrayList.java:766)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
...

当我的类不可序列化时,为什么会出现此错误?如何修复此错误?

要修复此错误,请实现可序列化接口并为其提供id

 Public class Foo implements Serializable {
     private static final long serialversionUID = 1L; // example
      //code then
 }

“我没有使这个类可序列化,因为我不需要这样做。”。是的,你确实需要,这是证据。发生这种情况是因为您的类不可
序列化
,解决它的方法是使其实现
可序列化
。当然这是显而易见的?这个类对象引用了任何可序列化的类吗?在Vaadin 8中,我没有得到这个错误。它始于瓦丁10号,所以苏姆廷发生了变化。因此,请使其
可序列化
。神秘的是什么?你能告诉我为什么我们需要变量serialversionUID吗?你可以在这里找到答案: