2016-08-19 2 views
-1

私は、あるコンピュータから別のコンピュータにサーバー経由でオブジェクトを送信する必要のあるサーバープロジェクトを持っています。オブジェクトはGameを拡張するSpecificGameです。サーバーは、受け取ったオブジェクトがGame型であることを知っていますが、SpecificGameやGameを継承する他のクラスにアクセスすることはできません。サーバーはこのオブジェクトを別のコンピュータに渡して、すべてうまくいきました。既存のクラスのサブクラスのJava ClassNotFoundException

ゲームを拡張する複数のクラスがあります(このサーバーを使用するいくつかのコンピュータゲーム)、ゲーム自体を変更することなく、これらのクラスを継続的に変更して追加しています。

しかし、最近、SpecificGameはサーバーが認識するGameを拡張しても、サーバーはSpecificGameに対してClassNotFoundExceptionをスローします。もし私がEclipseを特定ゲームと同じプロジェクトフォルダからjarファイルとしてエクスポートすると、正常に動作しますが、これは、jarファイルをエクスポートして、ゲームを拡張してサーバーを経由するものを変更するたびにサーバーを再起動する必要があることを意味します。

私はObjectInputStream.readObject()メソッドを使用して、ゲームを拡張するクラスを読み込みましたが、例外がスローされています。

原因を突き止めてください。

残念ながら、コードの詳細をオンラインで掲載することはできません。

ありがとうございます!

+0

SpecificGameを読み込んだ後、どのようにキャストしていますか? '(ゲーム)ObjectInputStream.readObject()'または '(特定のゲーム)ObjectInputStream.readObject()'? – corpico

+0

私は(Game)を使って、SpecificGameを含むあらゆるクラスを使用できるようにしました。これは、サーバーとGameを拡張します。 – Waiwera

答えて

0

コミュニケーションの一端に新しいクラスを追加する場合、もちろん同じクラスをもう一方の端に追加する必要があります。つまり、これらのクラスをサーバーに再デプロイして再起動する必要があります。

そうでない場合、サーバは、シリアル化された情報からSpecificGameオブジェクトを再構築するための情報を取得しますが、SpecificGameが何であるかを知らないとどうすればよいでしょうか?

関連する問題