クライアントからソケット経由で直列化されたJavaオブジェクトを送信しようとしていますが、サーバ側にキャストエラーがあり、理由を特定できません。 クラスのシリアル化は以下のとおりです。 (私はEclipseを使用していて、このクラスは、クライアント パッケージとサーバパッケージの両方である)サーバ側で直列化オブジェクトを膨張させるとキャストエラーが発生する
package client; //it is "package server;" on server side
import java.io.Serializable;
public class Simple implements Serializable {
public String msg;
public Simple(){
msg = "simple";
}
}
クライアント側では、私がやった:
Simple obj = new Simple();
Socket socket = new Socket(hostname, portNum);
ObjectOutputStream objOut = new ObjectOutputStream(socket.getOutputStream());
objOut.writeObject(obj);
objOut.flush();
objOut.close();
をサーバー側で、私がやりました:
Exception in thread "main" java.lang.ClassCastException: client.Simple cannot be cast to server.Simple at server.Server.main
:
//already accepted clientSocket
ObjectInputStream objIn = new ObjectInputStream(clientSocket.getInputStream());
Simple anObj = (Simple) objIn.readObject();
System.out.println("from server: " + anObj.msg);
objIn.close();
clientSocket.close();
しかし、私はエラーを得ました
私はServerとClientを1つのパッケージに似たものを試してみました。直列化とインフレーションの両方がうまく機能しました。私はなぜそれがここで動作しないかを知るのを助けることができれば本当に感謝します。