[kaffe] Bug in java.io.NotActiveException: defaultWriteObject
called by non-active class and/or object ?
Guilhem Lavaux
guilhem@kaffe.org
Wed Jan 14 23:21:02 2004
Gérard Basler wrote:
>Hi,
>
Hi Gérard,
>
>>From Sun's Java 1.4 doc:
>"This may only be called from the writeObject method of the class being
>serialized. It will throw the NotActiveException if it is called
>otherwise."
>
>I have a class with the following method:
>
>private void writeObject(java.io.ObjectOutputStream out) throws
>IOException
>{
> out.defaultWriteObject();
>}
>
>This will throw the following exception when run:
>java.io.NotActiveException: defaultWriteObject called by non-active
>class and/or object
> at java.io.ObjectOutputStream.markFieldsWritten
>(ObjectOutputStream.java:448)
> at java.io.ObjectOutputStream.defaultWriteObject
>(ObjectOutputStream.java:440)
>
>When I run without any exceptino under the Sun's vm.
>
>I took a look at the code of Kaffe's java classes and it looks like this
>doesn't happen if I call writeObject(Object obj) of
>ObjectOutputStream.java first.
>
>My question is now:
>Is this a bug or not? There doesn't seem to be any obligation to call
>writeObject(Object obj) before one can use defaultWriteObject() from
>Sun's view.
>
>
As I've understood you're trying to call your classes' writeObject
method without using ObjectOutputStream.writeObject. As you've just
quoted, it may only be called by 'class being serialized' it implies you
may only call it if your writeObject has been called by
ObjectOutputStream. So it's not a bug. BTW, I've tried to call
defaultWriteObject directly using Sun's JRE and it also fails.
Could you send more details on how you call writeObject ? (Here there
may be a flaw...)
Best regards,
Guilhem.