2013-04-27 63 views
0

我正試圖將一個java應用程序移植到android。該應用程序使用Serializable來存儲數據。有一個用戶數組列表,每個用戶都有其他各種元素(所有這些元素也都可以實現序列化)。在Java應用程序中,保存所有數據只是簡單地調用將序列化用戶列表寫入文本文件的方法。這似乎不適用於Android。將java應用程序移植到android - 是否可以使Serializable工作?

這不是一個文件未找到或IO異常 - 我已經照顧了。

有關如何解決此問題的任何想法?

public boolean loadUsers() 
    { 
     File newFile = new File("sdcard/download/users.txt"); 
     FileInputStream fileIn = null; 
    try 
    { 
     fileIn = new FileInputStream(newFile); 
     ObjectInputStream inStream = new ObjectInputStream(fileIn); 
     users = (ArrayList<User>)inStream.readObject(); 
     fileIn.close(); 
     return true; 
    } 
    catch (FileNotFoundException e) 
    { 
     System.err.println("File not found exception..."); 
    } 
    catch (IOException e) 
    { 
     System.err.println("Error occurred reading the file, aborting..."); 
    } 
    catch (Exception e) 
    { 
     System.err.println("Unexpected exception..."); 
    } 
    return false; 
} 

我已經想通了 - 我改變了包名,所以舊的序列化的文件沒有被正確讀取這個原因。一切正常,否則。

+0

你可以發佈日誌,錯誤,代碼?或者你只是想讓我們猜到 – alfasin 2013-04-27 00:51:56

+0

這是代碼。意外的例外是 – Zima 2013-04-27 00:57:01

+0

@Zima發生了什麼 - 那是什麼例外?告訴我們堆棧跟蹤;即修改代碼,以便您記錄堆棧跟蹤... – 2013-04-27 01:04:46

回答

1

當您試圖反序列化對象時,ClassNotFoundException很可能意味着您的類路徑中沒有用於串行流中對象的類。您需要將相關的JAR文件(或其他)添加到類路徑中。完整的異常消息/堆棧跟蹤將告訴你它丟失了哪些類...

(這不是Android特有的問題,序列化的對象流不包含類的字節碼,JVM需要那些之前,字節碼可以重組從流可重用的對象)


我已經想通了 - 我改變了包名,所以舊的序列化的文件沒有被正確讀取這個原因。

沒錯。當您更改包名稱時,就JVM而言,類將成爲不同的類。

相關問題