-
Bug
-
Resolution: Cannot Reproduce
-
P3
-
5.0
-
generic
-
generic
In effect to fix of 4966168 JInternalFrame can be serialized now, But can't be unserialized thus making no sense of its serializing
functionality.
Steps to reproduce:
1) Run the attached testcase TestSerializeInternalFrame
2) Change Look and Feel > Motif
3) Click on button "Serialize JInternalFrame" this will serialize JInternalFrame
in temp.log file in current working directory.
4) Now click on "Read Serialized JInternalFrame" and It will try to read serialized
JInternalFrame from temp.log file, But it fails giving following exception
java.io.InvalidClassException: javax.swing.JMenuItem$MenuItemPropertyChangeListe
ner; no valid constructor
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:428)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1026)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.beans.PropertyChangeSupport.writeObject(PropertyChangeSupport.ja
va:457)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1366)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:380)
at javax.swing.AbstractAction.writeObject(AbstractAction.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at javax.swing.event.EventListenerList.writeObject(EventListenerList.jav
a:240)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1366)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:380)
at javax.swing.JComponent.writeObject(JComponent.java:5220)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1242)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1066)
at java.io.ObjectOutputStream.access$100(ObjectOutputStream.java:135)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStrea
m.java:1509)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:418)
at java.awt.Container.writeObject(Container.java:3452)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.beans.PropertyChangeSupport.writeObject(PropertyChangeSupport.ja
va:457)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1366)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:380)
at java.awt.Component.writeObject(Component.java:7365)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at TestSerializeInternalFrame$1.actionPerformed(TestSerializeInternalFra
me.java:24)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:18
36)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2154)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5465)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3081)
at java.awt.Component.processEvent(Component.java:5230)
at java.awt.Container.processEvent(Container.java:1961)
at java.awt.Component.dispatchEventImpl(Component.java:3933)
at java.awt.Container.dispatchEventImpl(Container.java:2019)
at java.awt.Component.dispatchEvent(Component.java:3781)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4203
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3883)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3813)
at java.awt.Container.dispatchEventImpl(Container.java:2005)
at java.awt.Window.dispatchEventImpl(Window.java:1764)
at java.awt.Component.dispatchEvent(Component.java:3781)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
-------------------------
Also serializing JInternalFrame in motif is taking around 4 times more space than serializing in other Look and Feels. Following is small comparision
Metal: 5645 bytes
Window: 5621 bytes
Motif: 19895 bytes
--------------------------
PIT: 06.March.2004
###@###.### 2004-03-08
functionality.
Steps to reproduce:
1) Run the attached testcase TestSerializeInternalFrame
2) Change Look and Feel > Motif
3) Click on button "Serialize JInternalFrame" this will serialize JInternalFrame
in temp.log file in current working directory.
4) Now click on "Read Serialized JInternalFrame" and It will try to read serialized
JInternalFrame from temp.log file, But it fails giving following exception
java.io.InvalidClassException: javax.swing.JMenuItem$MenuItemPropertyChangeListe
ner; no valid constructor
at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:428)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1026)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.beans.PropertyChangeSupport.writeObject(PropertyChangeSupport.ja
va:457)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1366)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:380)
at javax.swing.AbstractAction.writeObject(AbstractAction.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at javax.swing.event.EventListenerList.writeObject(EventListenerList.jav
a:240)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1366)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:380)
at javax.swing.JComponent.writeObject(JComponent.java:5220)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1242)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1066)
at java.io.ObjectOutputStream.access$100(ObjectOutputStream.java:135)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStrea
m.java:1509)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:418)
at java.awt.Container.writeObject(Container.java:3452)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at java.beans.PropertyChangeSupport.writeObject(PropertyChangeSupport.ja
va:457)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1366)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:380)
at java.awt.Component.writeObject(Component.java:7365)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:495)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
0)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
30)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1281)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at TestSerializeInternalFrame$1.actionPerformed(TestSerializeInternalFra
me.java:24)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:18
36)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
a:2154)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258
)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
istener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5465)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3081)
at java.awt.Component.processEvent(Component.java:5230)
at java.awt.Container.processEvent(Container.java:1961)
at java.awt.Component.dispatchEventImpl(Component.java:3933)
at java.awt.Container.dispatchEventImpl(Container.java:2019)
at java.awt.Component.dispatchEvent(Component.java:3781)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4203
)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3883)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3813)
at java.awt.Container.dispatchEventImpl(Container.java:2005)
at java.awt.Window.dispatchEventImpl(Window.java:1764)
at java.awt.Component.dispatchEvent(Component.java:3781)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
-------------------------
Also serializing JInternalFrame in motif is taking around 4 times more space than serializing in other Look and Feels. Following is small comparision
Metal: 5645 bytes
Window: 5621 bytes
Motif: 19895 bytes
--------------------------
PIT: 06.March.2004
###@###.### 2004-03-08