-
Bug
-
Resolution: Fixed
-
P2
-
solaris_9, 1.0, 1.4.0
-
beta
-
generic, x86, sparc
-
solaris_8, windows_nt
-
Verified
This bug was originally detected by the failing test case
test/java/awt/dnd/DnDAcceptanceTest. We have created a new test case which does
not involve DnD.
import java.applet.Applet;
import java.awt.Button;
import java.awt.event.MouseAdapter;
import java.io.*;
public class DnDAcceptanceTest extends Applet {
public static void main(String[] args) {
final Button src = new Button();
src.addMouseListener(new Adapter());
testSer(src);
}
public void init() {
final Button src = new Button();
src.addMouseListener(new Adapter());
testSer(src);
}
public static void testSer(Object o) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Object copy = ois.readObject();
System.err.println("copy=" + copy);
} catch (Throwable ex) {
ex.printStackTrace();
}
}
}
class Adapter extends MouseAdapter implements Serializable {}
This test passes when run as a standalone application.
However if you run this test in appletviewer deserialization will fail
with exception:
java.lang.ClassNotFoundException: Adapter
at java.lang.ClassLoader.findClass(ClassLoader.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at java.lang.ClassLoader.loadClass(ClassLoader.java:259)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:195)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:489)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1365)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1288)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1489)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1161)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:283)
at java.awt.Component.readObject(Component.java:6528)
at sun.misc.Unsafe.invokeSpecial(Native Method)
at sun.misc.ClassReflector.invokeSpecial(ClassReflector.java:376)
at $ClassReflector1.readObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1585)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1508)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1161)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:283)
at DnDAcceptanceTest.testSer(DnDAcceptanceTest.java:26)
at DnDAcceptanceTest.init(DnDAcceptanceTest.java:16)
at sun.applet.AppletPanel.run(AppletPanel.java:344)
at java.lang.Thread.run(Thread.java:579)
This failure is reproducible on builds b46-b50 and not reproducible on
b40. I'm not sure whether this is a ClassLoader bug or a Serialization bug.
Filing bug based on stack trace for now.
test/java/awt/dnd/DnDAcceptanceTest. We have created a new test case which does
not involve DnD.
import java.applet.Applet;
import java.awt.Button;
import java.awt.event.MouseAdapter;
import java.io.*;
public class DnDAcceptanceTest extends Applet {
public static void main(String[] args) {
final Button src = new Button();
src.addMouseListener(new Adapter());
testSer(src);
}
public void init() {
final Button src = new Button();
src.addMouseListener(new Adapter());
testSer(src);
}
public static void testSer(Object o) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Object copy = ois.readObject();
System.err.println("copy=" + copy);
} catch (Throwable ex) {
ex.printStackTrace();
}
}
}
class Adapter extends MouseAdapter implements Serializable {}
This test passes when run as a standalone application.
However if you run this test in appletviewer deserialization will fail
with exception:
java.lang.ClassNotFoundException: Adapter
at java.lang.ClassLoader.findClass(ClassLoader.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
at java.lang.ClassLoader.loadClass(ClassLoader.java:259)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:195)
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:489)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1365)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1288)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1489)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1161)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:283)
at java.awt.Component.readObject(Component.java:6528)
at sun.misc.Unsafe.invokeSpecial(Native Method)
at sun.misc.ClassReflector.invokeSpecial(ClassReflector.java:376)
at $ClassReflector1.readObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1585)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1508)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1161)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:283)
at DnDAcceptanceTest.testSer(DnDAcceptanceTest.java:26)
at DnDAcceptanceTest.init(DnDAcceptanceTest.java:16)
at sun.applet.AppletPanel.run(AppletPanel.java:344)
at java.lang.Thread.run(Thread.java:579)
This failure is reproducible on builds b46-b50 and not reproducible on
b40. I'm not sure whether this is a ClassLoader bug or a Serialization bug.
Filing bug based on stack trace for now.
- duplicates
-
JDK-4424229 Java V2 Beta Rev 1.4 -- Hashtable Deserialization ClassNotFoundException
-
- Closed
-
-
JDK-4417167 Draw app. broken in Merlin
-
- Closed
-