Получение ошибки 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 с ними.

Другие вопросы по тегам