【问题标题】:java.io.NotSerializableException:: ObjectOutputStream: writeObject methodjava.io.NotSerializableException:: ObjectOutputStream: writeObject 方法
【发布时间】:2014-04-16 21:06:14
【问题描述】:

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

服务器代码:

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 接口。但这无济于事。

有人可以推荐吗?

【问题讨论】:

  • 请在此处发布您的同龄人的相关部分。当类定义中包含不可序列化的成员时,NotSerializableException 可能会上升。

标签: java sockets serializable


【解决方案1】:

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

import java.io.Serializable;

public class Peer implements Serializable {
  ...
}

【讨论】:

    【解决方案2】:

    谢谢大家的回复。

    我找到了解决方案。 我让我的 Peer 类实现 Serializable 以及那些从 Peer 类引用的类。

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

    现在工作正常。

    【讨论】:

      猜你喜欢
      • 2015-11-20
      • 1970-01-01
      • 2018-09-23
      • 2011-05-22
      • 2013-11-20
      • 2023-03-26
      • 2015-01-09
      • 1970-01-01
      • 2016-02-23
      相关资源
      最近更新 更多