【问题标题】:MyClass NotSerializableExceptionMyClass NotSerializableException
【发布时间】:2019-03-11 15:20:26
【问题描述】:

我创建了一个名为Components 的类。它有一些组件,如ButtonTextAreaVerticalLayout 等。我没有让这个类可序列化,因为我不需要,但是当我启动服务器(我使用 Tomcat)时,我得到了这个错误:

java.io.NotSerializableException: com.vaadin13.Components
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at java.util.ArrayList.writeObject(ArrayList.java:766)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
...

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

【问题讨论】:

  • '我没有让这个类可序列化,因为我不需要':好吧。是的,您确实需要这样做,这就是证明。发生这种情况因为你的类不是Serializable,修复它的方法是使它实现Serializable。这肯定很明显吗?
  • 这个类对象是否在任何可序列化的类中引用?
  • 在 Vaadin 8 中我没有收到此错误。它从 Vaadin 10 开始。
  • 所以有些东西发生了变化。所以让它Serializable。有什么玄机?

标签: java serialization vaadin10 notserializableexception


【解决方案1】:

要修复这个错误,实现 Serializable 接口并给它一个 id。

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

【讨论】:

猜你喜欢
  • 2014-10-11
  • 2015-06-01
  • 2013-05-14
  • 2023-04-03
  • 2014-07-23
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多