Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 4771604
Votes 0
Synopsis Cant be serialized JTextField that contain Japanese character.
Category java:classes_swing
Reported Against 1.4.1
Release Fixed
State 11-Closed, duplicate of 4770950, bug
Priority: 3-Medium
Related Bugs 4770950
Submit Date 30-OCT-2002
Description




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

FULL OPERATING SYSTEM VERSION : customer  Windows XP
[Version 5.1.2600]


A DESCRIPTION OF THE PROBLEM :
JTextField cant be serialized when JTextField instance is containing Japanese characters.

import java.io.*;
import javax.swing.*;

public class Test {
   public static void main(String[] args) throws Exception {
      JTextField ta = new JTextField("ã??"); // Japanese Character
      ObjectOutputStream out = new ObjectOutputStream(System.out);
      out.writeObject(ta);
      out.close();
   }
}


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
1. Compile and run the code

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Exception in thread "main" java.io.NotSerializableException: java.lang.Object
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
        at java.util.Hashtable.writeObject(Hashtable.java:801)
        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.io.ObjectStreamClass.invokeWriteObject
(ObjectStreamClass.java:795)
        at java.io.ObjectOutputStream.writeSerialData
(ObjectOutputStream.java:1294)
        at java.io.ObjectOutputStream.writeOrdinaryObject
(ObjectOutputStream.java:1245)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields
(ObjectOutputStream.java:1330)
        at java.io.ObjectOutputStream.writeSerialData
(ObjectOutputStream.java:1302)
        at java.io.ObjectOutputStream.writeOrdinaryObject
(ObjectOutputStream.java:1245)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.defaultWriteFields
(ObjectOutputStream.java:1330)
        at java.io.ObjectOutputStream.writeSerialData
(ObjectOutputStream.java:1302)
        at java.io.ObjectOutputStream.writeOrdinaryObject
(ObjectOutputStream.java:1245)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
        at Test.main(Test.java:17)

REPRODUCIBILITY :
This bug can be reproduced always.
(Review ID: 166410) 
======================================================================
Work Around
N/A
Evaluation
Serialization is failing because the JTextField instance, somewhere in its
graph of non-transient field values, contains an instance of java.lang.Object,
which is not serializable.

The offending object appears to be located at:

JTextField, field JTextComponent.model
  [AbstractDocument subclass], field AbstractDocument.documentProperties
     Hashtable.writeObject()
       java.lang.Object (appears to be a key in the hashtable)

  xxxxx@xxxxx   2002-10-31

I should add that the serialization failure occurs in JDK >= 1.3.1, but not
in 1.3.0 or 1.2.2.

  xxxxx@xxxxx   2002-10-31
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang