我將一個ArrayList<MyClass>
作爲對象保存爲ObjectOutputStream
。現在,我如何在ObjectInputStream
的另一個應用程序項目上讀取該對象?我試過了,它會拋出一個ClassNotFoundException
。我已將項目1中的MyClass
複製到項目2中。我還必須執行其他任何操作嗎?從不同的應用程序中讀取Java ObjectInputStream
回答
您不應該複製一個類,並期望它看起來相同 - Java編譯器/ JVM注意到這些更改。使用完全相同的類文件 !!!
有好幾個版本可以這樣做:
- 交付PROJECT1與Project2中並設置CLASSPATH
- 複製在類文件相同的封裝到Project2的
- 連接廣口瓶中,Project2的含
MyClass
而你永遠不應該忘記的東西:每個Serializable
應該有一個serialVersionUID
Eclipse自動發出警告 - 點擊它並生成它。如果您沒有Eclipse,請使用JDK中的serialver
。
但是不要忘記:如果您的課程改變了,以至於舊版本不能被新版本解釋,請更改serialversionUID
。
*每個Serializable應該有一個serialVersionUID *:否。這是不正確的。如果您不知道它是什麼,如何使用它,以及如何對您的類進行更改並向後兼容序列化版本,那麼添加serialVersionUID只會增加代碼的噪音。 – 2014-09-06 21:01:13
@JBNizet這是不正確的。我在與Linux和Windows上運行的'Object [Input | Stream]流擁有相同的JAR文件,並且在另一個操作系統上創建的文件沒有運行異常,那些'serialVersionUID'沒有運行' t匹配 – msrd0 2014-09-06 21:03:11
然後你可能有2個版本的同一個類,但是由兩個不同的編譯器編譯。請參閱http://docs.oracle.com/javase/7/docs/platform/serialization/spec/class.html#4100 – 2014-09-06 21:09:33
- 1. Java:從ObjectInputStream讀取
- 2. StreamCorruptedException,使用ObjectInputStream從TextFile中讀取(Java)
- 3. 使用ObjectInputStream讀取不同變量的Java
- 4. 從ObjectInputStream中讀取與寫入ObjectOutputStream不同的字節[]
- 5. 從Web應用程序的不同包中讀取文件
- 6. 從ObjectInputStream讀取拋出IllegalAccessException
- 7. 線程objectoutputstream objectinputstream阻止不讀取
- 8. ObjectInputStream讀取不正確
- 9. 從兩個不同的Java應用程序讀取和寫入SQLite數據庫
- 10. JAVA的ObjectInputStream不能從環
- 11. 從應用程序中讀取JSON的Android應用程序
- 12. Java:不能從套接字獲取ObjectInputStream
- 13. Talend - 從Java應用程序中的tHashImport組件讀取值 - HowTo?
- 14. ObjectInputStream讀取陣列
- 15. 從Mac應用程序中讀取stdio
- 16. 從Android應用程序中讀取PDF
- 17. 從.NET應用程序枚舉和讀取Java應用程序的UI控件
- 18. 從不同的應用程序中讀取標籤中的文本
- 19. Java應用程序讀取HTTPS請求
- 20. 從J2EE和Java應用程序中讀取公共變量
- 21. JAVA ObjectInputStream,讀取不存在的類的對象
- 22. 閱讀objectinputstream時Java中的EOFexception
- 23. Java:client-sever app.- WHILE on ObjectInputStream讀取線程
- 24. 如何從我的Java應用程序讀取圖像文件?
- 25. 簡單的Java應用程序從BLE燈塔讀取RSSI
- 26. 從Asp.Net讀取Java應用程序創建的cookie
- 27. android java從不同的線程同時讀取/寫入textview
- 28. 從InputStream JAVA讀取不同的輸入
- 29. ObjectInputStream haults程序
- 30. 從我寫的不同字節讀取
爲什麼你用'FileInputStream'而不是'ObjectInputStream'來讀?你是否檢查過兩個類都具有相同的'serialVersionUID'?如果這沒有幫助,你能否請過去的例外和最近的代碼? – msrd0 2014-09-06 20:50:04
你是什麼意思的「複製」。你不應該複製它。你應該使用完全相同的類。 – 2014-09-06 20:50:32
我的壞我在另一個項目中使用ObjectInputStream ..我將編輯問題 – 2014-09-06 20:51:04