获取java.io.NotSerializableException错误

时间:2018-03-08 20:43:08

标签: java file media-player serializable objectoutputstream

我想保存

的对象
 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 个答案:

答案 0 :(得分:1)

这里最好的问题是你为什么要首先保存它。考虑到MediaPlayer是一个JavaFx组件,我没有看到想要序列化和保存它的原因。

假设您要实现的目的是保存您传入的歌曲列表,我会继续这样做。

序列化和保存MediaPlayer之类的对象没有意义,只需保存歌曲列表和/或任何设置。然后,如果你可以在其他地方重建它,只需反序列化保存的数据并用它们重建一个新的MediaPlayer实例。