[Soot-list] Re: Body object + Problem.

Ondrej Lhotak olhota at sable.mcgill.ca
Fri Jul 29 12:14:20 EDT 2005


As far as I know, none of the classes in Soot are intended to be
serializable. Long ago, there was a failed attempt to try to serialize
some things, and the Body implementing Serializable is probably just
left over from that. Perhaps we should go through the code and remove
these misleading Serializable's...

Depending on the application, you may be able to write out the Jimple
version of the body to a .jimple file, and then read it back in using
Soot's Jimple parser.

Ondrej

On Tue, Jul 26, 2005 at 01:20:51PM +0200, Marc Njoku wrote:
>    Dear Sir or Madam,
> 
>    I am implementing a application, which is partly using your Soot-Framework
>    in a
>    client-server infrastructur.
> 
>    One of my Requests, is that I would like to write an instance of a Body
>    object
>    (Body class), with already loaded Java-Method data, into a File object.
> 
>    Per definition, the Body class is Serializable.
>    While trying to write a Body object in a file, I use the following
>    routine:
> 
>    Body
>    b=(Body)context.read(AbstractTracerSIB.CONTEXT_NAME,"soot.body");
> 
>    String FILENAME = "C:\\temp\\serial.dat";
>    f1 = new File(FILENAME);
>    ObjectOutputStream os = new ObjectOutputStream(new
>    BufferedOutputStream(new
>    FileOutputStream(FILENAME)));
>    os.writeObject(b);
>    os.close();
> 
>    Unfortunatly, the execution of this Java code returns a
>    "NotSerializableException".
> 
>    --------------------------------------------------------------------------
> 
>    This is a portion of the message that the JVM returns:
> 
>    java.io.NotSerializableException: soot.SootClass
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
>    at
>    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
>    at
>    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
>    at
>    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
>    at
>    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
>    at
>    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
>    at
>    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
>    at
>    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
>    at
>    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
>    at
>    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
>    at
>    java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1332)
>    at
>    java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1304)
>    at
>    java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1247)
>    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
>    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
> 
>    --------------------------------------------------------------------------
> 
>    Could you possibly help me solving this problem?
>    If the Body object is serializable, that means I should be able to write
>    it in a
>    file, right?
> 
>    Thank you in advance for an answer.
> 
>    Marc Njoku


More information about the Soot-list mailing list