2013-11-20 63 views
-1

我已經在類'userInfo'中實現了Serializable。我仍然得到例外。下面是輸出控制檯 -爲什麼我得到NotSerializableException異常,雖然我已經實現了'Serializable'

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: chatservernazmus.User 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1333) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at java.util.ArrayList.readObject(ArrayList.java:593) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947) 
     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) 
     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 
     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 
     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 
     at chatservernazmus.Server.getAllUser(Server.java:74) 
     at chatservernazmus.Server.<init>(Server.java:44) 
     at chatservernazmus.Main.main(Main.java:11) 

這裏是我的兩個類:

public class userInfo implements Serializable{ 
    public ArrayList<User> allUser=new ArrayList<User>(); 

    public void addUser(User e){ 
     allUser.add(e); 
    } 
    public ArrayList<User> getAllUser(){ 
    return allUser; 
    } 
} 


public class User{ 
    public String userName=""; 
    public String password=""; 
    public String statusMessage=""; 
    public ArrayList<String> friend=new ArrayList<String>(); 
    public ArrayList<String>offlineMessage=new ArrayList<String>(); 

    public User(String username,String password,String message){ 
     userName=username; 
     password=password; 
     statusMessage=message; 
    } 

    public void setStatusMessage(String message){ 
     statusMessage=message; 
    } 
    public void addFriend(String fr){ 
     friend.add(fr); 
    } 
    public ArrayList<String> getOfflineMessage(){ 
     ArrayList<String> str=new ArrayList<String>(); 
     offlineMessage.clear(); 
     return str; 
    } 
} 
+4

你應該提供一些代碼,其中你會得到錯誤 – ismail

+0

你是否在類User上實現了?哪個錯誤狀態!我不知道'userInfo'是否是用戶 –

+0

檢查堆棧跟蹤中提到的最後兩行的所有對象。 – Adarsh

回答

1

爲什麼我得到NotSerializableException例外,雖然我已經實現 '可序列化'

你沒有。

java.io.NotSerializableException:chatservernazmus.User 公共類USERINFO實現Serializable { 公共類用戶{

User類必須是可序列化也是如此。

+0

我修改了「public class用戶實現Serializable {「 仍然我收到錯誤。奇怪! – Burro

+0

如果命名同一個類的錯誤完全相同,那麼您尚未部署它,或者您沒有重新創建要嘗試讀取的ream。如果它命名了一個新的類,那麼使這個類可序列化,等等遞歸直到關閉。 – EJP

+0

非常感謝好友!我重新創建了.ser文件並且代碼正常工作。 – Burro

1

沒有看到你的代碼,很難知道肯定,但這樣做的原因是幾乎總是你的類有一個不可序列化的字段(或包含包含字段的對象,...)的字段。對象中的所有內容(包括對象引用的所有內容以及這些對象引用的所有內容)必須是可序列化的,以避免出現異常。

+0

這裏是我的兩個類 http://paste.ubuntu.com/6450698/ – Burro

相關問題