我正在开发一个使用TCP连接的客户端/服务器应用程序。我需要从服务器向客户端发送用户定义的对象。一切正常,直到客户端收到对象,它抛出ClassNotFoundException,即使该类是双方并且我投了它,它是Serializable。
客户端的例外是:
Exception in thread "main" java.lang.ClassNotFoundException: jggserver.Question
我不知道为什么客户端使用服务器包进行转换。 (他们是不同的项目)。
这是客户端的代码,其中例外是:
q = (Question) clientInputStream.readObject();
服务器端的代码:
serverOutputStream.writeObject(question);
虽然我经历了几个教程并且他们做了确切的事情。
我感谢任何帮助。
评论:
user1697575,两个程序都在同一台计算机上,同一个IDE(netbeans)。
我不知道TCP有效负载,我会搜索它。
我在服务器上创建了类,然后在客户端重构它,我不知道它是否正确。
我无法使用RMI,因为我被要求专门使用这种方式来实现我的项目。
解决:我创建了一个单独的包并向其添加了Question类,然后我将此包包含在服务器和客户端程序中。
谢谢所有人,特别是胡安。答案 0 :(得分:1)
我认为答案就在你的问题中,这里"我不知道客户端使用服务器包进行投射的原因。 (他们是不同的项目)。" 。
如果服务器和客户端上的软件包不同,则标准序列化系统无法正常工作。
您需要创建一个存在的类,这两个项目具有相同的名称和包,真的是#34;相同的代码"。
答案 1 :(得分:0)
需要考虑许多检查点:
出于好奇,你为什么不使用一个强大的RMI标准框架来处理很多事情呢?
答案 2 :(得分:0)
双方都有不。那个异常告诉你的是什么。它必须是同一个包中的相同类名。