2015-04-12 42 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

相关问题