java.io.NotSerializableException:com.MessageBroker

时间:2016-11-11 22:44:24

标签: java spring serialization

我的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。

2 个答案:

答案 0 :(得分:0)

您能否发布完整的MessageBroker课程?你检查过MessageBroker类中的所有字段吗?

我问这个是因为如果你的类中有Logger对象(很多人正在使用记录器:)),这个对象没有被声明为静态,它会产生这个错误。

答案 1 :(得分:-1)

请确保Message及其所有字段实现Serializable。 如果这不是解决方案,请提供有关所用对象的附加信息。