【发布时间】:2021-07-23 12:19:32
【问题描述】:
我正在构建一个 music.player,并将我的音乐库存储在 HashMap 中。用户应能够添加和删除歌曲。我想在程序重新启动时保存这个 HashMap。 但是我是否遇到过这个警告:
Exception in thread "main" java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: musicplayer.Song
研究表明我必须在我的 Song 类中实现 Serializable 接口。我做了,但仍然有这个警告。 我的歌曲课:
package musicplayer;
//Song-Klasse, speichert alle Attribute und Methoden eines Songs. Funktioniert soweit
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
public class Song implements Serializable {
private static final long serialVersionUID = 4390482518182625971L;
//Attribute
File file;
Clip clip;
String string;
//...
MusicDatan - 类
package musicplayer;
public class MusicDaten implements Serializable {
private static Map<String,Song> all; //= new HashMap<String,Song>();
private File file = new File("C://Users//ThinkPad T450s//git//testproject//musicplayer//SongInfo.ser");
// ...
public MusicDaten() throws ClassNotFoundException, IOException {
this.setSavedSongs();
}
public void setSavedSongs() throws IOException, ClassNotFoundException { //initialisziert HashMap mit den gespeicherten Songs
FileInputStream fileIn = new FileInputStream(file);
ObjectInputStream in = new ObjectInputStream(fileIn);
all = (HashMap<String,Song>) in.readObject();
in.close();
fileIn.close();
}
public void save() throws IOException { //Speicher HashMap
FileOutputStream fileOut = new FileOutputStream(file);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(all);
out.close();
fileOut.close();
System.out.println("Songinfo saved");
}
感谢您的帮助。 (在不太清楚之前我已经编辑过这个问题)
【问题讨论】:
-
到底发生了什么?为什么是
allstatic? -
它究竟说错了什么 - 不要让我们猜测。
MusicPlayerGUI是什么? -
SongInfo.ser不存在。 -
您在寻找
\musicplayer\SongInfo.ser文件的绝对路径是什么? -
我不知道如何在这里输入图片,所以我只输入我在 SongInfo.ser 中单击属性时看到的内容。路径:/musicplayer/SongInfo.ser;位置:C:\Users\ThinkPad T450s\git\musicplayer\musicplayer\SongInfo.ser
标签: java eclipse serialization deserialization java-13