0

ブール値とバイトがシリアライズ可能であることをJavaドキュメントから確認しました。Android docsに従って、私のクラスはシリアライズ可能なインターフェースを実装しています。なぜ例外が発生し続けるのかわかりません。ここで何が欠けていますか?クラスは次のようになります。

public class msgStruct implements Serializable {
    boolean pingPong = false; 
    int msgId = 0;
    byte[] bufferMsg = new byte[100];
}

これは、次のように、ソケットを介してサーバーに送信される前にシリアル化されます。

sendMsgStruct.pingPong = false;
sendMsgStruct.msgId = msgId;
rand.nextBytes(sendMsgStruct.bufferMsg);
try {
    ObjectOutputStream serializeMobile = new ObjectOutputStream(mobileSocket.getOutputStream());
    serializeMobile.writeObject(sendMsgStruct);
    serializeMobile.close();
} catch (IOException e1) {
    e1.printStackTrace();
    return false;
} 

サーバーは次のように逆シリアル化します。

try {
     ObjectInputStream deserializeServer = new ObjectInputStream(clientSocket.getInputStream());
     recvMsgStruct = (msgStruct) deserializeServer.readObject();
     deserializeServer.close();
    } catch (ClassNotFoundException e1) {
      e1.printStackTrace();
    }

オブジェクトがシリアル化および逆シリアル化される行で例外が発生します。

4

1 に答える 1

3

msgStruct はたまたま内部クラスですか? その場合は、静的にするか、独自の Java ファイルに移動してください。

于 2013-10-10T17:06:00.783 に答える