-
Type:
Bug
-
Resolution: Fixed
-
Priority:
P3
-
Affects Version/s: bdk_1.0, 1.1.4
-
Component/s: client-libs
-
None
-
swing0.7
-
x86, sparc
-
solaris_2.5.1, windows_95
Name: rk38400 Date: 09/23/97
Using the BeanBox on Win32, the following bean gives a trace.
I think that the Swing component is holding a reference that should
be transient.
This causes a serialize exception, In the ActiveX
bridge beta 4, this causes two dialogs to popup
that state the bean cannot be serialzlized. The
Dialogs cannot be dismissed.
import com.sun.java.swing.*;
public class TreeExample extends JPanel {
public TreeExample() {
super(true);
setLayout(new BorderLayout());
JTree tree = new JTree(new TreeNode("Not Quite A Bean"));
JScrollPane scrollpane = new JScrollPane();
scrollpane.getViewport().add(tree);
add("Center", scrollpane);
}
}
Default UI factory not set, using BasicFactory
Copy failed
java.io.NotSerializableException: com.sun.java.swing.basic.BasicScrollBarUI$Trac
kListener
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:660)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:225)
at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:637)
at java.io.ObjectOutputStream.checkSpecialClasses(ObjectOutputStream.jav
a:306)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:182)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:325)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:707)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:225)
at java.awt.AWTEventMulticaster.save(AWTEventMulticaster.java:657)
at java.awt.Component.writeObject(Component.java:2344)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:703)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:225)
at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:637)
at java.io.ObjectOutputStream.checkSpecialClasses(ObjectOutputStream.jav
a:306)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:182)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:325)
at java.awt.Container.writeObject(Container.java:1151)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:703)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:225)
at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java:637)
at java.io.ObjectOutputStream.checkSpecialClasses(ObjectOutputStream.jav
a:306)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:182)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
:325)
at java.awt.Container.writeObject(Container.java:1151)
at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:703)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:225)
at sun.beanbox.Wrapper.writeNakedBean(Wrapper.java:169)
at sun.beanbox.BeanBox.copy(BeanBox.java:598)
at sun.beanbox.BeanBox.doMenuItem(BeanBox.java:976)
at sun.beanbox.BeanBox.run(BeanBox.java:1145)
at java.lang.Thread.run(Thread.java:474)
company - BroadVision, Inc , email - ###@###.###
======================================================================
ronan.mandel@Eng 1997-12-02
Here's another one, although not a bean issue
1. compile the following source code SimpleExample2.java
2. run it
3. choose Save menuitem from the Menu File
4. java.io.NotSerializableException shows
This problem is very critical to us, please help us to sovle the problem soon.
//-----------Start the source code ----------
import com.sun.java.swing.*;
import com.sun.java.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class SimpleExample2 extends JPanel
{
//The Frame
public static Frame frame;
//The MenuBar
public static MenuBar menuBar = null;
public static SimpleExample2 example = null;
public SimpleExample2()
{
super(true);
String tabs[] = {"Page 1", "Page 2", "Page 3"};
// Create a TabbedPane
JTabbedPane tpane = new JTabbedPane();
setLayout(new BorderLayout());
for (int i = 0; i < tabs.length; i++)
tpane.addTab(tabs[i], null, createPane(tabs[i]));
tpane.setSelectedIndex(0);
add(tpane);
}
JPanel createPane(String s) {
JPanel p = new JPanel();
p.add(new JLabel(s));
return p;
}
MenuBar createMenuBar()
{
menuBar = new MenuBar();
//File Menu
Menu file = new Menu("File");
MenuItem saveItem = new MenuItem("Save");
saveItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
savePanel();
}
}
);
MenuItem exitItem = new MenuItem("Exit");
exitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
);
file.add(saveItem);
file.add(exitItem);
menuBar.add(file);
return menuBar;
}
public void savePanel()
{
System.out.println("SavePanel called ");
try {
FileOutputStream f = new FileOutputStream("test.pres");
ObjectOutput s = new ObjectOutputStream(f);
s.writeObject(example);
s.flush();
s.close();
} catch (IOException e) {
System.err.println("Failed to save a Panel to file ");
e.printStackTrace();
}
}
public static void main(String[] args)
{
frame = new Frame("SimpleExample2");
frame.setSize(400, 300);
frame.add("Center", example = new SimpleExample2());
frame.setMenuBar(example.createMenuBar());
frame.setVisible(true);
}
}
//----- end of source code --------