Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4277489

Bug 4258719 not fixed javax.swing.ImageIcon$AccessibleImageIcon not serializable

    XMLWordPrintable

Details

    • kestrel
    • x86, sparc
    • solaris_7, windows_nt
    • Not verified

    Description

      chEvent(EventQueue.java:302)
              at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:105)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:95)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:86)
      (Review ID: 96036)
      ======================================================================

      Name: skT88420 Date: 10/01/99


      I use an javax.swing.ImageIcon in a RMI Application and a exception is thrown:
      java.io.NotSerializableException: javax.swing.ImageIcon$AccessibleImageIcon
      java.rmi.MarshalException: error marshalling arguments; nested exception is:
      java.io.NotSerializableException: javax.swing.ImageIcon$AccessibleImageIcon
      java.io.NotSerializableException: javax.swing.ImageIcon$AccessibleImageIcon
      at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1123)

      The exception is not thrown in 1.2.2 !

      Conf:
      NT4/Sp5(german) Intel Celeron 300A
      128MB RAM
      (Review ID: 96041)
      ======================================================================


      Name: rlT66838 Date: 10/01/99


      javax.swing.ImageIcon$AccessibleImageIcon not serializable

      Bug is not fixed. In Kestrel build I.

      The test case listed below as well as the test case
      in the original bug report will show that it is not fixed.

      Test case
      import javax.swing.*;
      import java.awt.*;
      import java.awt.event.*;
      import java.io.*;


      public class SerializationTest extends JFrame implements ActionListener
      {
              /**
               * The ContentPane of the frame.
               */

              protected JPanel panel = null;

              /**
               * A Button, when pressed, The Color Chooser dialog will be invoked.
               */

              protected JButton colorButton = null;

              /**
               * A Button object, when pressed the ContentPane (panel) will be saved to a file
               * called "searialization.ser" in the user.dir directory.
               */

              protected JButton saveButton = null;


              public SerializationTest()
              {
                      super("Serialization Test");
                      panel = new JPanel();
                      setContentPane(panel);

                      //A dd a Window Listener to handle the closing operation.
                      addWindowListener(new WindowAdapter()
                             {
                              public void windowClosing(WindowEvent evt)
                              {
                                    dispose();
                                    System.exit(0);
                              }
                             });

                      getContentPane().setLayout(new FlowLayout());

                      colorButton = new JButton("Change Color");
                      colorButton.addActionListener(this);
                      getContentPane().add(colorButton);

                      saveButton = new JButton("Save Panel");
                      saveButton.addActionListener(this);
                      getContentPane().add(saveButton);

                      setSize(400, 400);
                      setVisible(true);
              }

              public void actionPerformed(ActionEvent evt)
              {
                      //If the "Change Color" Button is pressed do the following action.


                      if(evt.getSource() == colorButton)
                      {
                             panel.setBackground(JColorChooser.showDialog(this, "COLOR", panel.getBackground()));
                      }

                      //If the Save button is prssed.
                      else if(evt.getSource() == saveButton)
                      {
                             try
                             {
                              FileOutputStream fout = new FileOutputStream("serialization.ser");
                              ObjectOutputStream out = new ObjectOutputStream(fout);
                              //Component [] comps = panel.getComponents();
                              //for(int i = 0; i < comps.length; i ++)
                                    //System.out.println(comps[i] + "\n ****");
                              out.writeObject(panel);
                              out.close();
                              fout.close();
                             }
                             catch(IOException exp)
                             {
                              System.out.println(exp.getMessage());
                              exp.printStackTrace();
                             }
                      }
              }

              public static void main(String args[])
              {
                      new SerializationTest();
              }
      }


      Output:
      > use13l
      java version "1.3.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.0-I)
      Java HotSpot (TM) Client VM (build 1.3-I, interpreted mode)
      > java SerializationTest
      javax.swing.ImageIcon$AccessibleImageIcon
      java.io.NotSerializableException: javax.swing.ImageIcon$AccessibleImageIcon
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1123)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at javax.swing.JLabel.writeObject(JLabel.java:800)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.awt.Window.writeObject(Window.java:976)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at javax.swing.event.EventListenerList.writeObject(EventListenerList.java:239)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at javax.swing.JComponent.writeObject(JComponent.java:4556)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:1073)
              at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(ObjectOutputStream.java:451)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:356)
              at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:1773)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:472)
              at java.awt.Container.writeObject(Container.java:1857)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStream.java:1810)
              at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1185)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:361)
              at SerializationTest.actionPerformed(SerializationTest.java:79)
              at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1230)
              at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1265)
              at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:378)
              at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:250)
              at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:238)
              at java.awt.Component.processMouseEvent(Component.java:3612)
              at java.awt.Component.processEvent(Component.java:3441)
              at java.awt.Container.processEvent(Container.java:1253)
              at java.awt.Component.dispatchEventImpl(Component.java:2529)
              at java.awt.Container.dispatchEventImpl(Container.java:1302)
              at java.awt.Component.dispatchEvent(Component.java:2443)
              at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:2504)
              at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2288)
              at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2191)
              at java.awt.Container.dispatchEventImpl(Container.java:1289)
              at java.awt.Window.dispatchEventImpl(Window.java:854)
              at java.awt.Component.dispatchEvent(Component.java:2443)
              at java.awt.EventQueue.dispat

      Attachments

        Activity

          People

            lmonsantsunw Lynn Monsanto (Inactive)
            rlewis Roger Lewis (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: