-
Bug
-
Resolution: Fixed
-
P4
-
1.3.0
-
beta
-
sparc
-
solaris_2.6
Name: ooR10001 Date: 04/14/2000
If method setIconImage() is invoked with a non-Serializable parameter,
the object is no longer serializable.
For example, it could be invoked with instance of java.awt.Image.
In this case object's field 'icon' will be initialized with non-Serializable
class instance of java.awt.Image. This causes the problem.
The test example to reproduce the bug:
-------------------------------------------------------------
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class test {
public static void main(String[] args) {
try {
java.awt.Frame obj = new java.awt.Frame();
obj.setIconImage(new java.awt.image.BufferedImage(
8, 8, java.awt.image.BufferedImage.TYPE_BYTE_BINARY));
FileOutputStream ostream = new FileOutputStream("gold.tmp");
ObjectOutputStream objos = new ObjectOutputStream(ostream);
objos.writeObject(obj);
objos.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
-------------------------------------------------------------
Test output:
java.io.NotSerializableException: java.awt.image.BufferedImage
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
at
java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1841)
at
java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:480)
at java.awt.Frame.writeObject(Frame.java:718)
at java.lang.reflect.Method.invoke(Native Method)
at
java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1878)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1210)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
at test.main(test.java:14)
<-------------------------------------------------------------
======================================================================
- relates to
-
JDK-4353663 java.awt.Frame.readObject needs to handle case of missing optional data
- Resolved