私はAndroidプロジェクトにPacketクラス(com.lab.tracking.Packet)を持っています。このパケットをUDP経由でサーバに送信する必要があります。サーバにはそのパケットクラス(com.server.serverTracking.Packet)のコピーがあります。バイトストリームをオブジェクトに変換する
アンドロイドアプリはパケットをバイトストリームに変換し、それをサーバーに送信します。サーバーは正しくバイトストリームを受け取り、それはパケットに変換しようとすると、それが例外をスロー:
java.lang.ClassNotFoundException: com.lab.tracking.Packet
私はそれを理解しています。サーバーはこのオブジェクトをcom.server.serverTracking.Packetの代わりにcom.lab.tracking.Packetに変換しようとしています。
オブジェクトにバイトストリームからの変換は、次のとおりです。
public static Object toObject(byte[] dataReceived) {
Object obj = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(dataReceived);
ObjectInputStream ois = new ObjectInputStream(bis);
obj = ois.readObject();
} catch (IOException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
return obj;
}
私はこれを避けることができますか?両方のクラスはまったく同じなので、問題は完全な名前(またはIDなど)にあると思います。
ありがとうございます!
なぜ、まったく同じだが異なるパッケージの2つのクラスはありますか?一方を他方に単に変換する方法はありません。クライアントとサーバーが共通のPacketクラスを共有するように、コードをリファクタリングする必要があります。 – wolfcastle