gpt4 book ai didi

java - 通过 TCP 接收用户定义的对象并出现 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-01 10:55:52 25 4
gpt4 key购买 nike

我正在开发一个使用 TCP 连接的客户端/服务器应用程序。我需要将用户定义的对象从服务器发送到客户端。一切工作正常,直到客户端收到对象,它抛出 ClassNotFoundException,即使该类在两侧并且我将其强制转换,并且它是可序列化的。

客户端的异常(exception)是:

     Exception in thread "main" java.lang.ClassNotFoundException: jggserver.Question

我不知道为什么客户端要使用服务器包进行转换。 (它们是不同的项目)。

这是客户端的代码,异常(exception)情况是:

    q = (Question) clientInputStream.readObject();

服务器端代码:

    serverOutputStream.writeObject(question);

虽然我浏览了几个教程,但它们确实做了同样的事情。

感谢任何帮助。

<小时/>

评论:

用户1697575,两个程序都在同一台计算机和相同的IDE(netbeans)上。

  • 我不知道 TCP 负载,我会搜索一下。

  • 我在服务器上创建类,然后在客户端重构它,我不知道这是否正确。

  • 我无法使用 RMI,因为我被要求专门使用这种方式来实现我的项目。

非常感谢。

<小时/>

已解决:我创建了一个单独的包并向其中添加了 Question 类,然后我将此包包含在服务器和客户端程序中。

谢谢大家,特别是胡安。

最佳答案

我认为答案就在你的问题中,“我不知道为什么客户端使用服务器包进行转换。(它们是不同的项目)。”

如果服务器和客户端上的包不同,标准序列化系统就不可能工作。

您需要创建一个类,该类存在于具有相同名称和包的两个项目中,实际上是“相同的代码”。

关于java - 通过 TCP 接收用户定义的对象并出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33615371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com