Does Eclipse have an editor/viewer for java serialized files?

7.4k Views Asked by At

I'm serializing my objects with ObjectOutputStream(FileOutputStream(File)) and deserializing them with the analogous InputStreams. Is there a way to look inside of these serialized files (in eclipse preferably), so I can check, if all necessary attributes were written?

edit: google search was negative

5

There are 5 best solutions below

4
On BEST ANSWER

Write some tests (using Eclipse's built-in JUnit support).

The only way to "look inside" these files is to use ObjectInputStream(FileInputStream(File)), unless you're a bytecode guru and use a hex editor. If you actually have some testing, there is no need to "look inside" anything.

1
On

While this isn't a full fledged editor, Eamonn McManus has written a transcoder which deciphers a serialized blob into a human readable form. http://weblogs.java.net/blog/2007/06/12/disassembling-serialized-java-objects

If binary compatibility and performance are considerations, this would be a good time to look into Externalizable instead of Serializable.

0
On

Write a class which loads the file and deserialises the object. Then use Eclipse's Debugging View to browse the object (by setting a breakpoint).

0
On

This is not a "free standing" answer, just an expansion of OrangeDog's answer.

"Write some tests (using Eclipse's built-in JUnit support). "

If you want to test serialization, then write tests that do the following:

  1. Serialize one object to a file.
  2. Deserialize to a different object from the same file.
  3. Compair both objects to see that the deserialized object contains all of the values that were supposed to have been serialized (i.e. make sure that "all necessary attributes were written").
0
On

I found SerializationDumper, downloaded its v1.13 binary jar, and was quickly able to read a serialised file.

As you might expect from a tool that doesn't use (or require access to) the corresponding .class files themselves, the text output is quite arcane -- but I was able to decipher the contents of a small object containing a String[], a HashSet and a boolean.