【问题标题】:cannot serialize无法序列化
【发布时间】:2011-11-09 18:47:59
【问题描述】:

我正在用 java 中的摇摆组件做一个简单的骰子游戏。我只是想保存游戏的进度,所以我创建了一个名为State 的类,然后我想对其进行序列化。 但是当我尝试这样做时,NullPointerException 返回:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.plaf.synth.SynthLookAndFeel.paintRegion(SynthLookAndFeel.java:364)
    at javax.swing.plaf.synth.SynthLookAndFeel.update(SynthLookAndFeel.java:328)
    at javax.swing.plaf.synth.SynthViewportUI.update(SynthViewportUI.java:168)
...

使用调试器,我看到文件已创建,因此对象已被序列化,但我无法继续执行主程序。

我在 State 类中有这个方法:

public void SaveState() {
    try {
        ObjectOutput out = new ObjectOutputStream(new 
        FileOutputStream("C://game.ser"));
        out.writeObject(this);
        out.close();
    } catch (FileNotFoundException ex) {
    } catch (IOException ex) {
    }
}

类实现Serializable

【问题讨论】:

  • 您收到的是java.lang.NullPointerException。那是完整的堆栈跟踪吗?
  • 嗯,默默地忽略异常通常是个坏主意。但我看不出您的 SaveState() 方法的内容可能会导致后面的异常。调用方法后,是否设置了对null的引用?
  • 这与你的对象序列化无关。完整的堆栈跟踪将告诉您该异常来自何处。
  • 您的类实现了 Serializable,但该类中的每个成员类型是否也实现了 Serializable(并且递归地实现了那些)?

标签: java exception serialization nullpointerexception frame


【解决方案1】:

我明白了!问题是我试图序列化一个 DefaultDataModel,一个 State 的数据成员,所以我将寻找另一种方法来保存带有分数的 JTable!感谢您的回答!

【讨论】:

  • 恭喜修复。如果可以,请将您的答案标记为已接受,以便其他人可以从您的解决方案中学习。干杯~
猜你喜欢
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2013-12-13
  • 2022-01-23
  • 2011-07-19
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多