Мне нужно сохранить и загрузить шахматную игру. В шахматах у меня есть:Как решить InvalidClassException при чтении массива Object в ObjectInputStream?
public class Chess
{
private Piece[][] pieceArray;
private Board board;
private int moves;
private boolean turn;
...
Set's and get's
}
Мне нужно было бы загрузить поворот, двигаться и матрицу. На данный момент Im только сохраняет и загружает матрицу (Pieces [] [])
Теперь у меня есть эти методы для сохранения и загрузки игры в другом классе В этом классе у меня есть FTPClient, подключенный к серверу.
Сохранение игры:
public boolean saveGame(Chess chess) {
boolean error = false;
try {
File file = new File("game.save");
FileOutputStream fis = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fis);
oos.writeObject(chess.getArray());
oos.close();
// Save that file in the server
FileInputStream fis = new FileInputStream(new File("game.save"));
client.storeFile("game.save", fis);
fis.close();
file.delete();
} catch (IOException e) {
e.printStackTrace();
}
return error;
Сохранение игры не дает мне никаких проблем и идет гладко.
И теперь это метод, который я использую для загрузки игры, которая бросает исключение invalidClassException.
try {
FileInputStream fis = new FileInputStream(new File("game.save"));
ObjectInputStream ois = new ObjectInputStream(fis);
chess.setArray((Piece[][]) ois.readObject());
chess.paintInBoard();
ois.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
Всякий раз, когда я пытаюсь читать Матриз я получаю «java.io.InvalidClassException: [LPiece ;; недопустимый дескриптор для поля»
Я реализовал Serializable интерфейс в Кусок и шахматы. Я попытался сохранить весь шахматный класс, но при этом мне пришлось бы реализовать интерфейс Serializable в других 8 классах, и я стараюсь избегать этого. Должен ли я читать каждую пьесу отдельно?
Большое спасибо.