readobject method throws ClassNotFoundException

北城余情 提交于 2019-11-27 05:19:34

The package name and classname must be exactly the same at the both sides. I.e. write once, compile once and then give the both sides the same copy. Don't have separate server.Message and client.Message classes, but a single shared.Message class or something like that.

If you can guarantee the same package/class name, but not always whenever it's exactly the same copy, then you need to add a serialVersionUID field with the same value to the class(es) in question.

package shared;

import java.io.Serializable;

public class Message implements Serializable {
    private static final long serialVersionUID = 1L;

    // ...
}

The reason is, that the readObject() in ObjectInputStream is practically implemented as:

 String s = readClassName();
 Class c = Class.forName(s); // Here your code breaks
 Object o = c.newInstance();
 ...populate o...
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!