🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.jbuilder.java.api
Article #938

On java.io.NotSerializableException: java.lang.Object

#938
From: Worm Online
Date: Mon, 08 Jul 2002 07:45
187 lines
6504 bytes
Hi,
    I met a problem on using ObjectStrem.writeObject(Object). I have an
jTextPane object, if the jTextPane object contains only english letters, the
writeobject(obj) works well, if the jTextPane contains chinese letters, the
writeObject(obj) throws an exception "java.io.NotSerializableException:
java.lang.Object".

    Could anyone give some advice? Thank you in advance.




Main Program
====================================================

import javax.swing.UIManager;
import java.awt.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;


public class testRTF {
  private boolean packFrame = false;

  //Construct the application
  public testRTF() {
    Frame1 frame = new Frame1();
    //Validate frames that have preset sizes
    //Pack frames that have useful preferred size info, e.g. from their
layout
    if (packFrame) {
      frame.pack();
    }
    else {
      frame.validate();
    }
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }
  //Main method
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    new testRTF();
  }
}




JTextPane's frame

====================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;

public class Frame1 extends JFrame implements java.io.Serializable{
  private JPanel contentPane;
  private JMenuBar jMenuBar1 = new JMenuBar();
  private JMenu jMenuFile = new JMenu();
  private JMenuItem jMIExit = new JMenuItem();
  private JMenu jMenuHelp = new JMenu();
  private JMenuItem jMenuHelpAbout = new JMenuItem();
  private JLabel statusBar = new JLabel();
  private BorderLayout borderLayout1 = new BorderLayout();
  private JTextPane jTextPane1 = new JTextPane();
  private JMenuItem jMIOpen = new JMenuItem();
  private JMenuItem jMISave = new JMenuItem();

  //Construct the frame
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception  {

//setIconImage(Toolkit.getDefaultToolkit().createImage(Frame1.class.getResou
rce("[Your Icon]")));
    contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(borderLayout1);
    this.setSize(new Dimension(400, 300));
    this.setTitle("Frame Title");
    statusBar.setText(" ");
    jMenuFile.setText("File");
    jMIExit.setText("Exit");
    jMIExit.addActionListener(new ActionListener()  {
      public void actionPerformed(ActionEvent e) {
        jMIExit_actionPerformed(e);
      }
    });
    jMenuHelp.setText("Help");
    jMenuHelpAbout.setText("About");
    jMenuHelpAbout.addActionListener(new ActionListener()  {
      public void actionPerformed(ActionEvent e) {
        jMenuHelpAbout_actionPerformed(e);
      }
    });
    jTextPane1.setText("\u6D4B\u8BD5\u4E2D\u6587");
    //\u6D4B\u8BD5\u4E2D\u6587 is "��������"
    // If you change \u6D4B\u8BD5\u4E2D\u6587 to
    // jTextPane1.setText("test chinese");
    // the program runs well.
    jMenuFile.addSeparator();
    jMIOpen.setText("Open");
    jMIOpen.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jMIOpen_actionPerformed(e);
      }
    });
    jMISave.setText("save");
    jMISave.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jMISave_actionPerformed(e);
      }
    });
    jMenuFile.add(jMIOpen);
    jMenuFile.add(jMISave);
    jMenuFile.add(jMIExit);
    jMenuHelp.add(jMenuHelpAbout);
    jMenuBar1.add(jMenuFile);
    jMenuBar1.add(jMenuHelp);
    this.setJMenuBar(jMenuBar1);
    contentPane.add(statusBar, BorderLayout.SOUTH);
    contentPane.add(jTextPane1,  BorderLayout.CENTER);
  }
  //File | Exit action performed
  public void jMIExit_actionPerformed(ActionEvent e) {
    System.exit(0);
  }
  //Help | About action performed
  public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
  }
  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      jMIExit_actionPerformed(null);
    }
  }

  void jMIOpen_actionPerformed(ActionEvent e) {

  }

  void jMISave_actionPerformed(ActionEvent e) {
    Vector vect=new Vector();
    try {
      FileOutputStream fstrm = new FileOutputStream("tmp.rtf");
      ObjectOutput ostrm = new ObjectOutputStream(fstrm);
      vect.add(jTextPane1.getDocument());
      ostrm.writeObject(vect);
      //If you not use Vector, use this line instead.
      //ostrm.writeObject(jTextPane1.getDocument());
      // still throw exception
      fstrm.flush();
    } catch (Exception ex) {
      // should put in status panel
      ex.printStackTrace();
    }
  }
}
Technical Details
Message-ID: <3d2941ad_1@dnews>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!newsswitch.lcs.mit.edu!nntp.flash.net!newsfeed.wirehub.nl!PeerFeed.KWeb.on.ca!dnews

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: 1089d0,37aa6d68d3c616d,start
X-Google-Attributes: gid1089d0,public
X-Google-ArrivalTime: 2002-07-08 00:48:28 PST
From: "Worm Online" <worm_online@ubsys.net>
Newsgroups: borland.public.jbuilder.java.api
Subject: On java.io.NotSerializableException: java.lang.Object
Date: Mon, 8 Jul 2002 15:45:51 +0800
Lines: 190
Organization: UBsys
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
NNTP-Posting-Host: 218.2.178.97
Message-ID: <3d2941ad_1@dnews>
X-Trace: dnews 1026113965 218.2.178.97 (8 Jul 2002 00:39:25 -0700)
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!newsswitch.lcs.mit.edu!nntp.flash.net!newsfeed.wirehub.nl!PeerFeed.KWeb.on.ca!dnews