JDK-4671142 : LTP: XMLEncoder InstantiationException with JList
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.beans
  • Affected Version: 1.4.0,1.4.1
  • Priority: P4
  • Status: Open
  • Resolution: Unresolved
  • OS: linux,windows_2000
  • CPU: x86
  • Submitted: 2002-04-18
  • Updated: 2021-07-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Description
sion(XMLEncoder.java:351)
        at java.beans.DefaultPersistenceDelegate.doProperty
(DefaultPersistenceDelegate.java:219)
        at java.beans.DefaultPersistenceDelegate.initBean
(DefaultPersistenceDelegate.java:254)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:395)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeObject1(Encoder.java:192)
        at java.beans.Encoder.cloneStatement(Encoder.java:205)
        at java.beans.Encoder.writeStatement(Encoder.java:236)
        at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:320)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:253)
        at xmlencoderspecific.XMLEncoderSpecific.encodeDesktop
(XMLEncoderSpecific.java:98)Exception thrown = java.lang.Exception: discarding
  statement JViewport0.add(JList0);
        at xmlencoderspecific.XMLEncoderSpecific$1.actionPerformed
(XMLEncoderSpecific.java:68)
        at javax.swing.AbstractButton.fireActionPerformed
(AbstractButton.java:1767)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed
(AbstractButton.java:1820)
        at javax.swing.DefaultButtonModel.fireActionPerformed
(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed
(DefaultButtonModel.java:257)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick
(BasicMenuItemUI.java:1092)
        at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased
(BasicMenuItemUI.java:932)
        at java.awt.Component.processMouseEvent(Component.java:5021)
        at java.awt.Component.processEvent(Component.java:4818)
        at java.awt.Container.processEvent(Container.java:1380)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1437)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.LightweightDispatcher.retargetMouseEvent
(Container.java:3214)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2859)
        at java.awt.Container.dispatchEventImpl(Container.java:1423)
        at java.awt.Window.dispatchEventImpl(Window.java:1566)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy
(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy
(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)


This bug can be reproduced always.

---------- BEGIN SOURCE ----------

package xmlencoderspecific;


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.beans.*;
import javax.swing.*;


public class XMLEncoderSpecific implements ExceptionListener {
    JFrame frame;
    JDesktopPane desktop;
    JPanel panel;
    JScrollPane scrollPane;
    String strings[] = new String[] { ("ababab"), ("bcbcbc"), ("cdcdcd") };
    JList list;
    
    public XMLEncoderSpecific() {
        
        frame = new JFrame("JFrame");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        panel = new JPanel();
        panel.setLayout(new BorderLayout());
        JMenuBar menuBar = new JMenuBar();
        menuBar.add(createXMLMenu());
 
        list = new JList(strings);

        scrollPane = new JScrollPane(list);

        panel.add(menuBar, BorderLayout.NORTH);

        panel.add(scrollPane, BorderLayout.CENTER);

        frame.getContentPane().add(panel);

        frame.setBounds(10, 10, 600, 304);
        frame.setVisible(true);

    } // constructor
    

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

    public void exceptionThrown(Exception excp) {
        System.out.println("Exception thrown = " + excp);
        excp.printStackTrace();
    }
   
        
    protected JMenu createXMLMenu() {
        JMenu menu;
        JMenuItem item;
        AbstractAction    encodeAction;
        AbstractAction    decodeAction;

        menu = new JMenu("File");

        encodeAction = new AbstractAction("Encode") {
            public void actionPerformed(ActionEvent e) {
                try {
                    encodeDesktop();
                } catch (FileNotFoundException excp) {
                    System.out.println("encode file not found");
                };
            } // actionPerformed
        }; // fileEncodeAction AbstractAction

        
        decodeAction = new AbstractAction("Decode") {
            public void actionPerformed(ActionEvent e) {
                try {
                    decodeDesktop();
                } catch (FileNotFoundException excp) {
                    System.out.println("decode file not found");
                };
            } // actionPerformed
        }; // fileDecodeAction AbstractAction

        menu.add(encodeAction);
        menu.add(decodeAction);
                
        return menu;
    } // createFileMenu
    
    
    public void encodeDesktop() throws FileNotFoundException {
        XMLEncoder e = new XMLEncoder(
                               new BufferedOutputStream(
                                   new FileOutputStream("Test.xml")));
        e.setExceptionListener(this);
        e.writeObject(scrollPane);
        e.close();

        panel.remove(scrollPane);
        panel.revalidate();
        panel.repaint();
        scrollPane = null;
    }
    
    
    public void decodeDesktop() throws FileNotFoundException {
        XMLDecoder d = new XMLDecoder(
                          new BufferedInputStream(
                              new FileInputStream("Test.xml")));
        Object result = d.readObject();
        d.close();

        scrollPane = (JScrollPane)result;
        panel.add(scrollPane, BorderLayout.CENTER);
        panel.revalidate();
        panel.repaint();
    }

    
} // class XMLEncoderSpecific
---------- END SOURCE ----------
(Review ID: 145059) 
======================================================================

Name: gm110360			Date: 09/09/2002


FULL PRODUCT VERSION :
java version "1.4.1-rc"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-rc-b19)
Java HotSpot(TM) Client VM (build 1.4.1-rc-b19, mixed mode)


FULL OPERATING SYSTEM VERSION :
Linux linux 2.4.18-4GB #1 Wed Mar 27 13:57:05 UTC 2002 i686 unknown
 
ADDITIONAL OPERATING SYSTEMS :
SuSE Linux 7.3
glibc-2.2.5-123


A DESCRIPTION OF THE PROBLEM :
When I try to save a javax.swing.JList that contains some data in
the ListModel, using java.beans.XMLEncoder, (a) I get an error
message; and (b) the output stream does not contain my data.


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and run the following:
 
  import javax.swing.JList;
  import java.beans.XMLEncoder;
  public class SaveBeans {
      public static void main(String[] argv) {
          Object o = new JList(new Object[] {"hello", "world"});
          XMLEncoder e = new XMLEncoder(System.out);
          e.writeObject(o);
          e.close();
      }
  }


EXPECTED VERSUS ACTUAL BEHAVIOR :
I expect that there should be no error messages, and that the output
should include the strings "hello" and "world".
 
Below is what I actually get:
 
java.lang.InstantiationException: javax.swing.JList$1
Continuing ...
java.lang.RuntimeException: failed to evaluate:
<unbound>=JList$1.new();
Continuing ...
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.1-rc" class="java.beans.XMLDecoder">
 <object class="javax.swing.JList"/>
</java>


ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.lang.InstantiationException: javax.swing.JList$1
Continuing ...
java.lang.RuntimeException: failed to evaluate:
<unbound>=JList$1.new();
Continuing ...
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.1-rc" class="java.beans.XMLDecoder">
 <object class="javax.swing.JList"/>
</java>


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import javax.swing.JList;
  import java.beans.XMLEncoder;
  public class SaveBeans {
      public static void main(String[] argv) {
          Object o = new JList(new Object[] {"hello", "world"});
          XMLEncoder e = new XMLEncoder(System.out);
          e.writeObject(o);
          e.close();
      }
  }

---------- END SOURCE ----------

CUSTOMER WORKAROUND :
None known.
(Review ID: 164204)
======================================================================
Name: gm110360			Date: 04/18/2002


FULL PRODUCT VERSION :
java version "1.4.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-b92)
Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode)

FULL OPERATING SYSTEM VERSION :
Microsoft Windows 2000 [Version 5.00.2195]

A DESCRIPTION OF THE PROBLEM :
Trying to use XMLEncoder on a JScrollPane containing a
JList. Throws java.lang.InstantiationException:
javax.swing.JList$1

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. run example code
2. select encode from the xml menu
3.

EXPECTED VERSUS ACTUAL BEHAVIOR :
see description

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception thrown = java.lang.InstantiationException: javax.swing.JList$1
java.lang.InstantiationException: javax.swing.JList$1
        at java.lang.Class.newInstance0(Class.java:281)
        at java.lang.Class.newInstance(Class.java:249)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at java.beans.Statement.invoke(Statement.java:470)
        at java.beans.Expression.getValue(Expression.java:101)
        at java.beans.Encoder.getValue(Encoder.java:84)
        at java.beans.Encoder.get(Encoder.java:186)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:97)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.DefaultPersistenceDelegate.doProperty
(DefaultPersistenceDelegate.java:219)
        at java.beans.DefaultPersistenceDelegate.initBean
(DefaultPersistenceDelegate.java:254)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:395)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeObject1(Encoder.java:192)
        at java.beans.Encoder.cloneStatement(Encoder.java:205)
        at java.beans.Encoder.writeStatement(Encoder.java:236)
        at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:320)
        at java.beans.DefaultPersistenceDelegate.invokeStatement
(DefaultPersistenceDelegate.java:242)
        at java.beans.java_awt_Container_PersistenceDelegate.initialize
(MetaData.java:378)
        at java.beans.PersistenceDelegate.initialize
(PersistenceDelegate.java:191)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:393)
        at java.beans.javax_swing_JComponent_PersistenceDelegate.initialize
(MetaData.java:565)
        at java.beans.PersistenceDelegate.initialize
(PersistenceDelegate.java:191)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:393)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.DefaultPersistenceDelegate.doProperty
(DefaultPersistenceDelegate.java:219)
        at java.beans.DefaultPersistenceDelegate.initBean
(DefaultPersistenceDelegate.java:254)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:395)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeObject1(Encoder.java:192)
        at java.beans.Encoder.cloneStatement(Encoder.java:205)
        at java.beans.Encoder.writeStatement(Encoder.java:236)
        at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:320)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:253)
        at xmlencoderspecific.XMLEncoderSpecific.encodeDesktop
(XMLEncoderSpecific.java:98)
        at xmlencoderspecific.XMLEncoderSpecific$1.actionPerformed
(XMLEncoderSpecific.java:68)
        at javax.swing.AbstractButton.fireActionPerformed
(AbstractButton.java:1767)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed
(AbstractButton.java:1820)
        at javax.swing.DefaultButtonModel.fireActionPerformed
(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed
(DefaultButtonModel.java:257)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick
(BasicMenuItemUI.java:1092)
        at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased
(BasicMenuItemUI.java:932)
        at java.awt.Component.processMouseEvent(Component.java:5021)
        at java.awt.Component.processEvent(Component.java:4818)
        at java.awt.Container.processEvent(Container.java:1380)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1437)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.LightweightDispatcher.retargetMouseEvent
(Container.java:3214)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2859)
        at java.awt.Container.dispatchEventImpl(Container.java:1423)
        at java.awt.Window.dispatchEventImpl(Window.java:1566)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy
(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy
(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)
java.lang.RuntimeException: failed to evaluate: <unbound>=JList$1.new();
        at java.beans.Encoder.getValue(Encoder.java:88)
        at java.beans.Encoder.get(Encoder.java:186)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:97)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.DefaultPersistenceDelegate.doProperty
(DefaultPersistenceDelegate.java:219)
        at java.beans.DefaultPersistenceDelegate.initBean
(DefaultPersistenceDelegate.java:254)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:395)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeObject1(Encoder.java:192)
        at java.beans.Encoder.cloneStatement(Encoder.java:205)
        at java.beans.Encoder.writeStatement(Encoder.java:236)
        at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:320)
        at java.beans.DefaultPersistenceDelegate.invokeStatement
(DefaultPersistenceDelegate.java:242)
        at java.beans.java_awt_Container_PersistenceDelegate.initialize
(MetaData.java:378)
        at java.beans.PersistenceDelegate.initialize
(PersistenceDelegate.java:191)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:393)
        at java.beans.javax_swing_JComponent_PersistenceDelegate.initialize
(MetaData.java:565)
        at java.beans.PersistenceDelegate.initialize
(PersistenceDelegate.java:191)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:393)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.DefaultPersistenceDelegate.doProperty
(DefaultPersistenceDelegate.java:219)
        at java.beans.DefaultPersistenceDelegate.initBean
(DefaultPersistenceDelegate.java:254)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:395)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:351)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:100)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeObject1(Encoder.java:192)
        at java.beans.Encoder.cloneStatement(Encoder.java:205)
        at java.beans.Encoder.writeStatement(Encoder.java:236)
        at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:320)
        at java.beansException thrown = java.lang.RuntimeException: failed to
evaluate: <unbound>=JList$1.new();
.XMLEncoder.writeObject(XMLEncoder.java:253)
        at xmlencoderspecific.XMLEncoderSpecific.encodeDesktop
(XMLEncoderSpecific.java:98)
        at xmlencoderspecific.XMLEncoderSpecific$1.actionPerformed
(XMLEncoderSpecific.java:68)
        at javax.swing.AbstractButton.fireActionPerformed
(AbstractButton.java:1767)
        at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed
(AbstractButton.java:1820)
        at javax.swing.DefaultButtonModel.fireActionPerformed
(DefaultButtonModel.java:419)
        at javax.swing.DefaultButtonModel.setPressed
(DefaultButtonModel.java:257)
        at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
        at javax.swing.plaf.basic.BasicMenuItemUI.doClick
(BasicMenuItemUI.java:1092)
        at
javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased
(BasicMenuItemUI.java:932)
        at java.awt.Component.processMouseEvent(Component.java:5021)
        at java.awt.Component.processEvent(Component.java:4818)
        at java.awt.Container.processEvent(Container.java:1380)
        at java.awt.Component.dispatchEventImpl(Component.java:3526)
        at java.awt.Container.dispatchEventImpl(Container.java:1437)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.LightweightDispatcher.retargetMouseEvent
(Container.java:3214)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:2929)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:2859)
        at java.awt.Container.dispatchEventImpl(Container.java:1423)
        at java.awt.Window.dispatchEventImpl(Window.java:1566)
        at java.awt.Component.dispatchEvent(Component.java:3367)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy
(EventDispatchThread.java:190)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy
(EventDispatchThread.java:144)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)
java.lang.Exception: discarding statement JViewport0.add(JList0);
        at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:333)
        at java.beans.DefaultPersistenceDelegate.invokeStatement
(DefaultPersistenceDelegate.java:242)
        at java.beans.java_awt_Container_PersistenceDelegate.initialize
(MetaData.java:378)
        at java.beans.PersistenceDelegate.initialize
(PersistenceDelegate.java:191)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:393)
        at java.beans.javax_swing_JComponent_PersistenceDelegate.initialize
(MetaData.java:565)
        at java.beans.PersistenceDelegate.initialize
(PersistenceDelegate.java:191)
        at java.beans.DefaultPersistenceDelegate.initialize
(DefaultPersistenceDelegate.java:393)
        at java.beans.PersistenceDelegate.writeObject
(PersistenceDelegate.java:103)
        at java.beans.Encoder.writeObject(Encoder.java:55)
        at java.beans.XMLEncoder.writeObject(XMLEncoder.java:250)
        at java.beans.Encoder.writeExpression(Encoder.java:260)
        at java.beans.XMLEncoder.writeExpres

Comments
WORK AROUND To workaround the JList problem. Instead of creating the JList by calling JList(strings), create the list model first and then add the list model to the JList: DefaultListModel model = new DefaultListModel(); for (int i = 0; i < strings.length; i++) { model.addElement(strings[i]); } list = new JList(model); ###@###.### 2002-04-19
19-04-2002

EVALUATION There seems to be two separate problems here. One problem is that the JList constructor which takes an array or vector will create an anonymous AbstractListModel which cannot be found by the encoder. Instead, an explicit DefaultListModel should be used as a workaround. See the work around section for details. The other problem is that an object added to the viewport of the JScrollPane has trouble with encoding. The Container persistence delegate seems to special case the JScrollPane but not the JViewport. I tried a couple of things but I'm stil unclear about the problem. ###@###.### 2002-04-19
19-04-2002