0

我刚刚遵循了序列化教程,我想知道为什么它不起作用。我有一个这样的游戏类:

import java.io.Serializable;

public class Game implements Serializable{

    private static final long serialVersionUID = -4795536311274486893L;
    protected int SHOT_SPEED;
    protected int PLAYER_SPEED;
    Player player;
    ArrayList<SpaceObject> objects;
    int level, score;
    Dimension resolution;
    and so on...

我的阅读器方法应该处理对象 IO,如下所示:

public boolean saveGame(Game game) {
        try {
            FileOutputStream fileOut = new FileOutputStream(defaultDataName+".ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);

            out.writeObject(game);

            out.close();
            fileOut.close();
            return true;
        }
        catch (IOException i) {
            return false;
        }

    }

    public Game loadGame() throws IOException {
        if (readRawData(defaultDataName) == "") throw new IOException("Data was deleted");
        Game game = null;
        try {
            FileInputStream fileIn = new FileInputStream(defaultDataName+".ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);

            game = (Game) in.readObject();

            in.close();
            fileIn.close();
        }
        catch (ClassNotFoundException e) {
            throw new IOException("Class not Found: " + e.getMessage());
        }
        return game;
    }  

在我看来,我所做的一切都与教程中的完全一样,所以为什么不成功。(它会引发 ClassNotFoundError。感谢您的帮助!

4

2 回答 2

2

运行第二种方法时,似乎该类不在您的类路径中。

  • 你能发布整个异常消息吗?
  • 您是否使用具有相同类路径的序列化和反序列化器?
于 2012-10-01T09:15:51.270 回答
0

包含在 Serializable 标记类中的每个类都应该是可序列化的。我认为这就是你得到的错误。

于 2012-10-01T09:18:17.563 回答