我的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();
}
}这是我的消息对象,
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,我该如何获得它呢?
发布于 2016-11-13 01:36:27
你能贴出你完整的MessageBroker类吗?您是否检查了MessageBroker类中的所有字段?
我之所以这样问,是因为例如,如果你的类中有Logger对象(很多人都在使用loggers :),而这个对象并没有声明为静态的,那么就会产生这个错误。
发布于 2016-11-12 07:03:37
请确保Message及其所有字段都实现了Serializable。如果这不是解决方案,请提供有关所用对象的附加信息。
https://stackoverflow.com/questions/40557368
复制相似问题