java.io.NotSerializableException:这是什么异常啊?

2025-04-04 12:21:08
推荐回答(1个)
回答1:

对象输出流的对象所对应的类还没有实现Serializable接口。调用ObjectOutputStream输出的对象必须实现这个接口,创建的pojo类未实现Serializable接口,启动服务器会报此异常,但是貌似对代码功能没影响,或者说暂时未发现有什么影响。要解决此异常,可通过实现该接口解决。

1,异常产生原因:

在整个推的项目中,消息是一个Message类,Message必须转换为字节传输,因此在Message类中实现了Serializable接口,在服务器中将Message编码传输到客户端中解码,就是这个环节发生了错误,这是因为服务端的Message类和客户端的Message类的包路径不一样,导致编码和解码不一致,自然会报异常!

2,异常解决

{1}序列化的类最好加上serialVersionUID,免java.io.InvalidClassException,不同的JVM对serialVersionUID的计算方法可能不一样,就算类的定义和序列化后的对象是一致的,也可能从JVM-A里序列化后的对象到达JVM-B后,JVM-B认为 Class Invalid

{2}服务端和客户端编解码的类的路径要一致