我有一个服务器项目,我需要通过服务器将对象从一台计算机发送到另一台计算机。该对象是一个SpecificGame,它扩展了Game。服务器知道它收到的对象是Game类型,但是无法访问SpecificGame或任何其他扩展Game的类。然后服务器将此对象传递给另一台计算机,一切都很好。
我有多个扩展游戏的类(我正在使用这个服务器的几个计算机游戏),我不断修改和添加这些类,而不修改游戏本身。
但是,最近,服务器为SpecificGame抛出了ClassNotFoundException,即使SpecificGame扩展了服务器识别的Game。如果我在eclipse中从与PropGame相同的项目文件夹中将Server作为jar导出,它工作正常,但是这意味着每次修改扩展Game并通过服务器的任何东西时我都必须导出jar并重新启动服务器。
我一直在使用ObjectInputStream.readObject()方法来读取扩展游戏的类,而这一直在抛出异常。
请帮我弄清楚可能导致这种情况的原因。
不幸的是,我无法在线发布代码细节。
谢谢!
答案 0 :(得分:0)
当您在通信的一端添加新类时,您当然也需要将同一个类添加到另一端。这意味着,您必须将这些类重新部署到服务器并且必须重新启动它。
否则,在您的情况下,服务器从某些序列化信息中获取重建SpecificGame
对象的信息,但是如何在不知道SpecificGame
是什么的情况下执行此操作?