-
Bug
-
Resolution: Fixed
-
P4
-
1.3.0
-
hopper
-
sparc
-
solaris_7
-
Verified
Launching, running, then saving the attached applet causes a NotSerializableException at BasicGraphicsUtils.isLeftToRight. This occurred on Solaris 2.7 with Kestrel-fcs-V.
Steps to Reproduce:
1) Using the attached applet, run it with appletviewer.
2) Play with the applet, press the buttons, use menus, etc.
3) Select "Save..." from the "Applet" menu.
RESULT: In the console window the following exception is thrown:
in appletSave: java.io.NotSerializableException: java.lang.Thread
java.lang.NullPointerException at javax.swing.plaf.basic.BasicGraphicsUtils.isLeftToRight(BasicGraphicsUtils.java:300) at javax.swing.plaf.basic.BasicMenuItemUI.layoutMenuItem(BasicMenuItemUI.java:753)
at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredMenuItemSize(BasicMenuItemUI.java:368)
at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredSize(BasicMenuItemUI.java:305)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1042)
at javax.swing.BoxLayout.checkRequests(BoxLayout.java:361)
at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:194)
at java.awt.Container.preferredSize(Container.java:833)
at java.awt.Container.getPreferredSize(Container.java:817)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1044)
at javax.swing.JRootPane$RootLayout.layoutContainer(JRootPane.java:694)
at java.awt.Container.layout(Container.java:686)
at java.awt.Container.doLayout(Container.java:676)
at java.awt.Container.validateTree(Container.java:750)
at java.awt.Container.validateTree(Container.java:757)
at java.awt.Container.validateTree(Container.java:757)
at java.awt.Container.validate(Container.java:728)
at sun.applet.AppletPanel.run(AppletPanel.java:359)
at java.lang.Thread.run(Thread.java:484)
This is very similar to bug # 4280648: java.lang.NullPointerException occurred by file saving with appletviewer.
In the case of 4280648 the exception was java.lang.NullPointerException at plaf.basic.BasicMenuBarUI. uninstallListeners
I wrote up another bug #4320454 because non-serializable applets should not be allowed to be saved.
Name: apR10133 Date: 01/10/2002
Here is the modified testcase which gets more information about
nature of this NPE:
---------------------- Test.java --------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Test implements ActionListener {
JMenu menu;
public Test() {
JFrame fr = new JFrame("Test");
JMenuBar menuBar = new JMenuBar();
fr.setJMenuBar(menuBar);
menu = new JMenu("TOOLS");
menuBar.add(menu);
menu.add(new JMenuItem("TOOL1"));
menu.add(new JMenuItem("TOOL2"));
menu.add(new JMenuItem("TOOL3"));
JButton fire = new JButton("FIRE");
fire.addActionListener(this);
fr.getContentPane().add(fire);
fr.setSize(200,100);
fr.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(menu);
System.out.println("Menu serialization succed.");
} catch (Exception se) {
se.printStackTrace();
}
}
public static void main(String[] argv) {
new Test();
}
}
--------------------------------------------------------------------
======================================================================
Steps to Reproduce:
1) Using the attached applet, run it with appletviewer.
2) Play with the applet, press the buttons, use menus, etc.
3) Select "Save..." from the "Applet" menu.
RESULT: In the console window the following exception is thrown:
in appletSave: java.io.NotSerializableException: java.lang.Thread
java.lang.NullPointerException at javax.swing.plaf.basic.BasicGraphicsUtils.isLeftToRight(BasicGraphicsUtils.java:300) at javax.swing.plaf.basic.BasicMenuItemUI.layoutMenuItem(BasicMenuItemUI.java:753)
at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredMenuItemSize(BasicMenuItemUI.java:368)
at javax.swing.plaf.basic.BasicMenuItemUI.getPreferredSize(BasicMenuItemUI.java:305)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1042)
at javax.swing.BoxLayout.checkRequests(BoxLayout.java:361)
at javax.swing.BoxLayout.preferredLayoutSize(BoxLayout.java:194)
at java.awt.Container.preferredSize(Container.java:833)
at java.awt.Container.getPreferredSize(Container.java:817)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1044)
at javax.swing.JRootPane$RootLayout.layoutContainer(JRootPane.java:694)
at java.awt.Container.layout(Container.java:686)
at java.awt.Container.doLayout(Container.java:676)
at java.awt.Container.validateTree(Container.java:750)
at java.awt.Container.validateTree(Container.java:757)
at java.awt.Container.validateTree(Container.java:757)
at java.awt.Container.validate(Container.java:728)
at sun.applet.AppletPanel.run(AppletPanel.java:359)
at java.lang.Thread.run(Thread.java:484)
This is very similar to bug # 4280648: java.lang.NullPointerException occurred by file saving with appletviewer.
In the case of 4280648 the exception was java.lang.NullPointerException at plaf.basic.BasicMenuBarUI. uninstallListeners
I wrote up another bug #4320454 because non-serializable applets should not be allowed to be saved.
Name: apR10133 Date: 01/10/2002
Here is the modified testcase which gets more information about
nature of this NPE:
---------------------- Test.java --------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Test implements ActionListener {
JMenu menu;
public Test() {
JFrame fr = new JFrame("Test");
JMenuBar menuBar = new JMenuBar();
fr.setJMenuBar(menuBar);
menu = new JMenu("TOOLS");
menuBar.add(menu);
menu.add(new JMenuItem("TOOL1"));
menu.add(new JMenuItem("TOOL2"));
menu.add(new JMenuItem("TOOL3"));
JButton fire = new JButton("FIRE");
fire.addActionListener(this);
fr.getContentPane().add(fire);
fr.setSize(200,100);
fr.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(menu);
System.out.println("Menu serialization succed.");
} catch (Exception se) {
se.printStackTrace();
}
}
public static void main(String[] argv) {
new Test();
}
}
--------------------------------------------------------------------
======================================================================
- relates to
-
JDK-4321354 appletviewer:NullPointerException occurerd with file saving for the second time.
- Closed
-
JDK-4280648 java.lang.NullPointerException occurred by file saving with appletviewer.
- Closed