【问题标题】:java.io.NotSerializableException Libgdxjava.io.NotSerializableException Libgdx
【发布时间】:2016-05-07 23:28:54
【问题描述】:

我正在尝试为我的 LibGdx 游戏实现保存功能。这只是为了我的学习目的,所以我试图在手机上重新创建 Fallout Shelter 游戏,但只是作为桌面版本。当我尝试保存或加载时,出现此错误:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.badlogic.gdx.utils.Array

这里是load方法,在游戏启动时调用,总是报错

private void Load() {
    try {
        // Open file to read from, named SavedObj.sav.
        FileInputStream saveFile = new FileInputStream("SaveGame.sav");

        // Create an ObjectInputStream to get objects from save file.
        ObjectInputStream save = new ObjectInputStream(saveFile);

        energy = (Integer) save.readObject();
        System.out.println(energy);
        food = (Integer) save.readObject();
        System.out.println(food);
        water = (Integer) save.readObject();
        System.out.println(water);
        maxEnergy = (Integer) save.readObject();
        System.out.println(maxEnergy);
        maxFood = (Integer) save.readObject();
        System.out.println(maxFood);
        maxWater = (Integer) save.readObject();
        System.out.println(maxWater);
        caps = (Integer) save.readObject();
        System.out.println(caps);
        maxDwellers = (Integer) save.readObject();
        System.out.println(maxDwellers);
        dwellers = (Array<Dweller>) save.readObject();
        //Close the save file
        save.close(); 
    } catch (Exception exc) {
        exc.printStackTrace(); // If there was an error, print the info.
    }
}

当我尝试加载Dwellers列表时,它总是发现该行有问题(保存有相同的错误并在同一行中找到错误)

dwellers = (Array<Dweller>) save.readObject();

然后它给出了上面提到的错误。这个类正在使用 java.io.Serializable 并已实现,正如其他类似的问题所暗示的那样,但无论我是否实现了它,我仍然遇到同样的错误。

【问题讨论】:

  • 除非我遗漏了什么,否则com.badlogic.gdx.utils.Array 类不会实现Serializable。哪个类实现了Serializable?

标签: java arraylist libgdx serializable


【解决方案1】:

例外情况是说您正在尝试序列化 com.badlogic.gdx.utils.Array 的实例...而您不能。

根据javadoc,您尝试序列化的Array 类没有实现Serializable。

您没有提供足够的信息来进行正确的诊断/修复,但我怀疑Dweller 直接或间接使用了Array 类,这就是根本原因。可能的解决方案可能是标记Array 字段瞬态,和/或实现自定义序列化方法(readObject、writeObject 等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 2013-01-03
    • 2013-09-13
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多