2017-08-07 15 views
1

シンプルなJava Gmailクライアントをプログラミングして、レベルプロジェクトを完成させています。 次のコードセクションが実行されると、私は常にエラーになります。 エラーの原因がわかりません。シリアライズ可能なファイルに書き込むときにエラーが発生する

public static void save(List<user> u3){ 
    try { 

     FileOutputStream fos=new FileOutputStream("users.ser"); 
     ObjectOutputStream oos= new ObjectOutputStream(fos); 
     oos.writeObject(u3); 

    }catch (Exception e) { 
     e.printStackTrace(); //Added due to suggestion of commentor 
    } 
} 

エラーがある:

java.io.NotSerializableException:ユーザ java.io.ObjectOutputStream.writeObjectでjava.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) (AT sun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でjava.util.ArrayList.writeObject(ArrayList.java:762) でObjectOutputStream.java:348) (NativeMethodAccessorImpl.java:62 ) at sun.refle ct.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java。 io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.メイン・サヴェ(main.java:65) (main.java:42) at __SHELL12.run(__SELELL12.java:6) at sun。 reflection.NativeMethodAccessorImpl.invoke0(ネイティブメソッド)java.lang.reflect.Method.invoke(Method.java:497)でsun.reflect.NativeMethodAccessorImpl.invoke sun.reflect.DelegatingMethodAccessorImpl.invokeで(NativeMethodAccessorImpl.java:62) (DelegatingMethodAccessorImpl.java:43) で at bluej.runtime.ExecServer $ 3.run(ExecServer.java:730)

+1

ユーザクラスはSerializableを実装していますか? – Dakoda

+0

メインクラスまたはユーザークラス?それらのどちらも直列化を実装していません – SpeedProgrammer

+0

Javaでオブジェクトをシリアル化する方法(https://www.tutorialspoint.com/java/java_serialization.htm)をお読みください – Tezra

答えて

1

クラス「ユーザー」はSerializableを実装していません。 シリアライズ可能なのは主にタグ付けインターフェースです。あなたはそれを実装するために何もする必要はありません。あなたのクラスがそれを実装すると宣言するだけで十分です。

class User implements Serializable{ 
    // your existing code here 
} 
0

公式documentation of JEE7で述べたように:インスタンスがSerializableインタフェースに

を持っている必要がある場合にスローされ

だから、あなただけのSerializableインタフェースを実装する必要があります。

class User implements Serializable { 
//Staff 
} 
関連する問題