java readobject方法引发ClassNotFoundException
我正在尝试学习Java,并希望使用Java的客户机/服务器进行测试,以使客户机向服务器发送一个自定义类(消息)的简单对象。问题是我一直在服务器端收到ClassNotFoundException
我认为其余的代码似乎没有问题,因为其他对象(如字符串)可以顺利通过
我在客户机和服务器的不同位置有两个不同的netbeans项目
他们每个人在各自的包下都有自己的消息类副本。 消息类实现了可序列化
在客户端,我尝试通过发送消息对象
在服务器端,调用readObject方法时,它似乎是从客户机的包而不是自己的包中查找消息类。printStackTrace在服务器端显示:“java.lang.ClassNotFoundException:client.Message”
我甚至还没有尝试投射或存储收到的对象。有什么我遗漏的吗
# 1 楼答案
原因是ObjectInputStream中的readObject()实际上实现为:
# 2 楼答案
包名和类名在两侧必须完全相同。即写一次,编译一次,然后给双方相同的副本。没有单独的
server.Message
和client.Message
类,而是一个shared.Message
类或类似的类如果您可以保证相同的包/类名,但并非总是在完全相同的副本时,那么您需要向所讨论的类添加一个具有相同值的
serialVersionUID
字段