java.io.NotSerializableException :: ObjectOutputStream:writeObject方法

时间:2014-03-12 15:37:01

标签: java sockets serializable

我正在尝试使用套接字将客户端连接到服务器。

服务器代码:

ServerSocket server = new ServerSocket(6780);
Socket clientSocket = server.accept();
ObjectInputStream fromClient= new ObjectInputStream(clientSocket.getInputStream());
ObjectOutputStream toClient = new ObjectOutputStream(clientSocket.getOutputStream());

客户代码:

Socket nodeSocket = new Socket(ServerIP, 6780);
ObjectInputStream fromServer = new ObjectInputStream(nodeSocket.getInputStream());
ObjectOutputStream toServer = new ObjectOutputStream(nodeSocket.getOutputStream());
toServer.writeObject(this);

当客户端连接时,服务器侦听并接受客户端连接。 但是当我尝试将我的类对象写入服务器时," toServer.writeObject(this);" 它抛出

java.io.NotSerializableException: Peer
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at Peer.requestEntryNode(Peer.java:47)
at Peer.main(Peer.java:87)

Peer是我的班级名字。

我试图找出这个异常的原因,它说需要写入的对象必须是可序列化的。 我还尝试从Peer类实现Serializable接口。但那没有用。

有人可以建议吗?

2 个答案:

答案 0 :(得分:4)

确保您的类Peer及其依赖项确实实现了java.io.Serializable接口:

import java.io.Serializable;

public class Peer implements Serializable {
  ...
}

答案 1 :(得分:0)

感谢大家的回复。

我找到了解决方案。 我创建了我的Peer类来实现Serializable和那些从Peer类引用的类。

ObjectOutputStream和ObjectInputStream未序列化。所以我不能让他们成为类变量。我在每种方法中声明它们是本地的。

现在工作正常。