我的Spring应用程序中有一个对象,我想在写入一些新数据时保留它。
这是我的目标,
public class MessageBroker implements Serializable{
private List<Message> backbone;
private Map<String, List<Message>> messagesReceived;
private Map<String, List<Message>> messagesSent;
public MessageBroker(){
backbone = new ArrayList<>();
messagesReceived = new ConcurrentHashMap<>();
messagesSent = new ConcurrentHashMap<>();
}
..........
现在在对象的send方法中,我有了这个,
public void send(Message message){
.........
FileOutputStream fileOutputStream = null;
ObjectOutputStream objectOutputStream = null;
try {
fileOutputStream = new FileOutputStream("./data/store.ser");
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(this);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
这是我的Message对象,
public class Message implements Serializable{
@Getter @Setter
private String senderId;
@Getter @Setter
private String receiverId;
@Getter @Setter
private String mediaId;
}
我收到以下错误,
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.MessageBroker
我是如何得到这个的,因为我已经实现了Serializable。
答案 0 :(得分:0)
您能否发布完整的MessageBroker课程?你检查过MessageBroker类中的所有字段吗?
我问这个是因为如果你的类中有Logger对象(很多人正在使用记录器:)),这个对象没有被声明为静态,它会产生这个错误。
答案 1 :(得分:-1)
请确保Message及其所有字段实现Serializable。 如果这不是解决方案,请提供有关所用对象的附加信息。