readobject方法抛出ClassNotFoundException

eru*_*ina 8 java client classnotfoundexception

我正在尝试使用Java并希望使用Java的客户端/服务器进行测试,以使客户端将自定义类(Message)的简单对象发送到服务器.问题是我一直在服务器端获得ClassNotFoundException.

我认为其余的代码似乎没问题,因为像String这样的其他对象可以毫无问题地通过.

我在客户端和服务器的不同位置有两个不同的netbeans项目.

他们每个人都有自己的Message类副本.消息类实现Serializable.

在客户端,我尝试发送一个Message对象.

在服务器端,在调用readObject方法时,它似乎从客户端的包中找到Message类而不是它自己的包.printStackTrace显示:服务器端的"java.lang.ClassNotFoundException:client.Message"

我甚至没有尝试过投射或存储收到的对象.有什么东西我遗漏了吗?

Bal*_*usC 18

包名称和类名必须在两侧完全相同.即写一次,编译一次,然后给双方相同的副本.没有单独的server.Messageclient.Message类,但没有单个shared.Message类或类似的东西.

如果您可以保证相同的包/类名称,但并不总是在完全相同的副本时,则需要向相关类添加serialVersionUID具有相同值的字段.

package shared;

import java.io.Serializable;

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

    // ...
}
Run Code Online (Sandbox Code Playgroud)

  • 请不要使serialUID正好1L,因为这可能会干扰其他具有相同想法的愚蠢开发人员. (3认同)