2016-01-30 81 views
0

我正在嘗試爲我的LibGdx遊戲實現保存功能。這只是爲了我的學習目的,所以我試圖在移動電話上重新創建Fallout Shelter遊戲,但只是作爲桌面版本。當我嘗試保存或加載我得到這個錯誤:java.io.NotSerializableException Libgdx

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

這裏是負載的方法,被稱爲當遊戲啓動和結果總是在錯誤

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 = (Array<Dweller>) save.readObject(); 

凡然後給出了上面提到的錯誤。這個類所使用的類是使用java.io.Serializable並且已經實現了,就像其他問題一樣,但是我仍然得到了同樣的錯誤,無論我是否實現了它。

+0

除非我遺漏了某些東西,否則'com.badlogic.gdx.utils.Array'類不會實現'Serializable'。哪個類實現了'Serializable'? – Armaiti

回答

1

例外情況是說你試圖序列化一個com.badlogic.gdx.utils.Array的實例......而你不能。

根據javadoc,您嘗試序列化的Array類未執行Serializable

您尚未提供足夠的信息以進行正確的診斷/修復,但我懷疑Dweller直接或間接使用Array類,這是根本原因。可能的解決方案可能是標記Array字段瞬態,和/或實現自定義序列化方法(readObject,writeObject等)。

相關問題