Получение ошибки java.io.NotSerializableException
Я хочу сохранить объект
javafx.scene.media.MediaPlayer
класс с использованием ObjectOutputStream, но он работает только с сериализуемыми классами и выглядит так, как будто класс MediaPlayer не сериализуем.
Это мой код:
ObjectOutputStream objectOutputStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
MediaPlayer[] player = songList.toArray(new MediaPlayer[songList.size()]);
objectOutputStream.writeObject(player); // error occurs here
objectOutputStream.close();
И я получаю эту ошибку:
java.io.NotSerializableException: javafx.scene.media.MediaPlayer
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at mp3.MusicPlayer.saveSongs(MusicPlayer.java:72)
at mp3.MainFrame$1.windowClosing(MainFrame.java:55)
Как решить эту проблему?
1 ответ
Лучший вопрос здесь, почему вы хотите сохранить это в первую очередь. Принимая во внимание, что MediaPlayer является компонентом JavaFx, я не вижу причин для того, чтобы захотеть сериализовать и сохранить это.
Если предположить, что вы хотите добиться того, чтобы сохранить список песен, который вы передаете, я бы просто пошел дальше и сделал именно это.
Нет смысла сериализовать и сохранять объекты, такие как MediaPlayer
Просто сохраните список песен и / или любые другие настройки. Затем, если вы сможете восстановить это где-то еще, просто десериализуйте сохраненные данные и восстановите новый экземпляр MediaPlayer с ними.