0

我正在尝试将客户端应用程序传递的对象转换为服务器应用程序中相同类的对象。

我目前在服务器应用程序中收到的错误是:

mei 02, 2012 11:44:43 PM server.UserThread process
SEVERE: null
java.lang.ClassNotFoundException: client.User

服务器正在通过 Socket -> ObjectInputStream 接收对象。

所以我想知道你们是否可以帮助我将 client.User 类转换为我的 Server.User 类。唯一可行的是将包放在 1 个项目中,然后定义类的确切位置。

始终可以提供代码。

4

2 回答 2

2

将 client.User 类转换为我的 Server.User 类

你不能。他们不是同一个班级。它们在不同的包装中。它们不一样。如果要在服务器和客户端之间共享一个类,则必须共享一个 .class 文件。这可能意味着为共享内容创建第三个包。

于 2012-05-02T23:10:39.770 回答
0

正如一些用户在回答您的问题时建议的那样,这些类必须相同。使用默认的序列化过程来展平和膨胀对象似乎不是一个好选择。如果您使用Externalizable接口,您可以定义自己的协议,而不是 Serializable,您可以使用 writeExternal 和 readExternal 来自定义序列化过程。

如果您尝试将对象从服务器发送到客户端,我真的不鼓励使用对象流。我可以建议Protobuff这样做吗?

原型:

协议缓冲区是一种以高效且可扩展的格式对结构化数据进行编码的方法。Google 几乎所有内部​​ RPC 协议和文件格式都使用协议缓冲区。

于 2012-05-02T22:45:20.063 回答