2015-04-12 39 views
2

我進入了一個問題,其中一個HashMap成員序列化後變爲null。它變成一個討厭的事情來調試。在這個過程中,我注意到我真的很想有一些對序列化文件的調試視圖。因爲在最後,序列化的文件結構必須是這樣的:我可以查看用於調試的Java序列化對象嗎?

package.MyClass 
    propName = package2.MyClass2 /**nested class data here**/; 
    propName2 = java.lang.Integer 666; 

等等,簡單地說,不需要爲數據的人類閱讀的類。有沒有辦法在不將數據轉換爲Java實例的情況下對數據進行半反序列化,以便將內容輸出到控制檯中?

+0

我很困惑你的問題。如果您想查看序列化對象,請將其反序列化並查看它。 –

+1

@HovercraftFullOfEels該對象是錯誤的,或者其中一個類缺失。 –

+1

簡化您的程序和調試。如果仍然沒有解決方案,則可以進一步簡化並調試,直到達到解決方案。 –

回答

0

是的,你可以。使用十六進制編輯器。儘管如此,您仍然可以通過手動工作來聽聽Hovercraft和EJP。但是如果你像我一樣,你無法抗拒至少看一次封面。

+1

什麼將使用十六進制編輯器告訴你?可以從中獲得什麼有用的信息? –

+0

我當然使用十六進制編輯打開文件,但看不到任何我能理解的東西。我希望有一種方法可以使用Java庫來解析二進制文件,而無需加載類並通常從序列化數據構造Java對象。 –

+1

@TomášZato您需要讀取與[對象序列化流協議規範](https://docs.oracle.com/javase/7/docs/platform/serialization/spec/protocol.html)相關聯的十六進制轉儲,明顯,但這並不容易,因爲任何對象的內容都可能依賴於類的實現。 – EJP

相關問題