0

AndroidクライアントとGoogleAppEngineサーブレットがあります。
そして、シリアル化によってクライアントからサーバーにオブジェクトを転送しています。シリアル化は、JPA DBに保存しているプロファイルと 呼ばれるエンティティオブジェクトを除いて
、プロジェクト内のすべてのシリアル化されたオブジェクトに対して正常に機能します。 プロファイルインスタンスをクライアントからサーバーに転送する場合は正常に機能します が、サーバーからクライアントに転送する場合は、以下のように例外が発生します。


コードにコードの重複がないことを付け加えておきます。
プロファイルクラスはサーバープロジェクトにあり、クライアントプロジェクトにはサーバーのパスが含まれています。

W/System.err(1104): java.io.InvalidClassException: javax.jdo.identity.LongIdentity; Incompatible class (SUID): javax.jdo.identity.LongIdentity: static final long serialVersionUID =2472141538875317527L; but expected javax.jdo.identity.LongIdentity: static final long serialVersionUID =2940818939440220368L; 

私のEnityクラスは次のとおりです。

@Entity
public class Profile implements Serializable
{
    private static final long serialVersionUID = 1L;

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private int age;
    private String email;
    private boolean onlineStatus = false;

    public Profile() {}

    public Profile(int age,String email) 
    {
        super();
        this.age = age;
        this.email = email;
    }

    public int getAge() 
    {
        return age;
    }
    public void setAge(int age) 
    {
        this.age = age;
    }

    public String getEmail() 
    {
        return email;
    }

    public void setEmail(String email) 
    {
        this.email = email;
    }

    public boolean isOnlineStatus() 
    {
            return onlineStatus; 
    }

    public void setOnlineStatus(boolean onlineStatus)
    {
        this.onlineStatus = onlineStatus;
    }

フルスタックトレース:

04-21 21:04:56.577: W/System.err(1104): at java.io.ObjectInputStream.verifyAndInit(ObjectInputStream.java:2697)
04-21 21:04:56.577: W/System.err(1104): at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1825)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:811)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2039)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:916)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readNewArray(ObjectInputStream.java:1678)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:914)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
04-21 21:04:56.592: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1291)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:518)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1535)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1443)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2112)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:916)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readNewArray(ObjectInputStream.java:1678)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:914)
04-21 21:04:56.597: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1291)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:518)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1535)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1443)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2112)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:916)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2262)
04-21 21:04:56.607: W/System.err(1104): at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2217)
04-21 21:04:56.607: W/System.err(1104): at streetMeet.Client.CustomHttpClient.readObject(CustomHttpClient.java:274)
04-21 21:04:56.607: W/System.err(1104): at streetMeet.Client.CustomHttpClient.executeHttpPost(CustomHttpClient.java:59)
04-21 21:04:56.607: W/System.err(1104): at streetMeet.Client.StreetMeetActivity.connectToServer(StreetMeetActivity.java:154)
04-21 21:04:56.607: W/System.err(1104): at streetMeet.Client.StreetMeetActivity.sendMessageToServer(StreetMeetActivity.java:141)
04-21 21:04:56.607: W/System.err(1104): at map.StreetMapActivity$1.run(StreetMapActivity.java:116)
4

1 に答える 1

3

Javaオブジェクトのシリアル化は、異なるVM実装(この場合はGAEJVMとAndroidDalvik)間で機能することが保証されていないことに注意してください。

シリアル化には、プラットフォームに依存しない形式を使用する必要があります。最も人気のあるのはJSONです。

于 2012-04-22T15:24:16.930 に答える