【问题标题】:Java ClassNotFoundException for subclass of existing class现有类的子类的 Java ClassNotFoundException
【发布时间】:2016-08-19 02:42:14
【问题描述】:

我有一个服务器项目,我需要通过服务器将对象从一台计算机发送到另一台计算机。该对象是一个SpecificGame,它扩展了Game。服务器知道它收到的对象是 Game 类型,但无法访问 SpecificGame 或任何其他扩展 Game 的类。然后服务器会将这个对象传递给另一台计算机,一切都很好。

我有多个扩展 Game 的类(我正在开发的几个计算机游戏使用此服务器)并且我不断修改和添加这些类,而不修改 Game 本身。

然而,最近,服务器为 SpecificGame 抛出 ClassNotFoundException,即使 SpecificGame 扩展了服务器识别的 Game。如果我从与 Eclipse 中的 SpecificGame 相同的项目文件夹中将 Server 作为 jar 导出,它可以正常工作,但这意味着我每次修改扩展 Game 并通过服务器的任何内容时都必须导出 jar 并重新启动服务器。

我一直在使用 ObjectInputStream.readObject() 方法读取扩展游戏的类,这一直在抛出异常。

请帮助我找出可能导致此问题的原因。

很遗憾,我无法在线发布代码细节。

谢谢!

【问题讨论】:

  • 读完SpecificGame之后你是怎么玩的? (Game) ObjectInputStream.readObject()(SpecificGame) ObjectInputStream.readObject()?
  • 我使用了 (Game),以便我可以使用任何类,包括 SpecificGame,它通过服务器扩展 Game

标签: java classnotfoundexception extend objectinputstream


【解决方案1】:

当您向通信的一端添加新类时,您当然也需要向另一端添加相同的类。这意味着,您必须将这些类重新部署到服务器并重新启动它。

否则,在您的情况下,服务器会从一些序列化信息中获取信息以重建 SpecificGame 对象,但是他应该如何在不知道 SpecificGame 是什么的情况下做到这一点?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多