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

标签 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 是我的类(class)名称。

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

谁能推荐一下?

最佳答案

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

import java.io.Serializable;

public class Peer implements Serializable {
  ...
}

关于java.io.NotSerializableException::ObjectOutputStream: writeObject 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22356464/

相关文章:

java - 在 Java 中 boolean 类型转换没用吗?

c# - 从所有网络适配器发送广播消息

linux - 当 FIN、ACK 从服务器发送 RST 后,从客户端发送的套接字不会失败

c++ - 如何在linux中指定套接字使用哪个接口(interface)

java - 用 c 编写一个函数,其中包含以下语句序列 [不会编译]

java - 使用 Maven 执行器跳过模块

android - 如何从元素中获取数据

c# - 如何序列化第 3 方类型以跨 AppDomain 进行通信?

scala - Spark 任务不可序列化

java - Neo4j-reco : Engine FriendsComputingEngine wasn't found on the classpath