0

クライアントアプリケーションから渡されたオブジェクトを、サーバーアプリケーションの同じクラスのオブジェクトにキャストしようとしています。

サーバーアプリケーションで現在受信しているエラーは次のとおりです。

mei 02, 2012 11:44:43 PM server.UserThread process
SEVERE: null
java.lang.ClassNotFoundException: client.User

オブジェクトは、Socket->ObjectInputStreamを介してサーバーによって受信されています。

だから私はあなたたちが私がclient.Userクラスを私のServer.Userクラスにキャストするのを手伝ってくれるかどうか疑問に思っていました。唯一機能するのは、パッケージを1つのプロジェクト内に配置してから、クラスの正確な場所を定義することです。

コードはいつでも提供できます。

4

2 に答える 2

2

client.Userクラスを私のServer.Userクラスにキャストします

できません。彼らは同じクラスではありません。それらは異なるパッケージに含まれています。彼らは違う。サーバーとクライアント間でクラスを共有する場合は、単一の.classファイルを共有する必要があります。これは、共有のものの3番目のパッケージを作成することを意味する場合があります。

于 2012-05-02T23:10:39.770 に答える
0

一部のユーザーがあなたの質問に答えて提案するように、クラスは同じである必要があります。デフォルトのシリアル化プロセスを使用してオブジェクトをフラット化および膨張させることは、適切な選択ではないようです。Serializableの代わりにExternalizableインターフェースを使用する場合は、独自のプロトコルを定義できます。writeExternalおよびreadExternalを使用して、シリアル化プロセスをカスタマイズできます。

サーバーからクライアントにオブジェクトを送信しようとしている場合は、オブジェクトストリームの使用をお勧めしません。Protobuffにこれを行うように提案してもいいですか?

プロトバフ:

プロトコルバッファは、構造化データを効率的でありながら拡張可能な形式でエンコードする方法です。Googleは、ほとんどすべての内部RPCプロトコルとファイル形式にプロトコルバッファを使用しています。

于 2012-05-02T22:45:20.063 に答える