Possible Duplicate:
How to Serialize an ArrayLIst in java without getting errors?
I have two arraylists in two different classes. One is to store transaction objects temporarily & other for permanent. Im using a addAll method to copy objects from temporary arraylist to permanent. And then save objects from permanent arraylist to a file. When my program restarts, object in permanent arraylists are restored from the file. But Iam getting an exception. Whats wrong with my code ?
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList;
/** * * @author Haleemdeen */ public class FileImportExport {
private ArrayList<Stock> permntTransactions=new ArrayList<Stock>(); void cancatToPerrmntTransactions(ArrayList<Stock> arraylist1){ permntTransactions.addAll(arraylist1); } ArrayList<Stock> displayPermntTransactions(){ return permntTransactions; } void exportToFile(){ try{ // Catch errors in I/O if necessary. // Open a file to write to, named SavedObj.sav. FileOutputStream saveFile=new FileOutputStream("SaveObj.sav"); // Create an ObjectOutputStream to put objects into save file. ObjectOutputStream save = new ObjectOutputStream(saveFile); // Now we do the save. save.writeObject(permntTransactions); // Close the file. save.close(); // This also closes saveFile. } catch(Exception exc){ exc.printStackTrace(); // If there was an error, print the info. } } void importFromFile(){ try{ // Open file to read from, named SavedObj.sav. FileInputStream saveFile = new FileInputStream("SaveObj.sav"); // Create an ObjectInputStream to get objects from save file. ObjectInputStream save = new ObjectInputStream(saveFile); // Now we do the restore. // readObject() returns a generic Object, we cast those back // into their original class type. permntTransactions = (ArrayList<Stock>) save.readObject(); // Close the file. save.close(); // This also closes saveFile. } catch(Exception exc){ exc.printStackTrace(); // If there was an error, print the info. } // Print the values, to see that they've been recovered. System.out.println("\t\t" + permntTransactions); System.out.println(); } }
In main method :
FileImportExport file1=new FileImportExport(); file1.cancatToPerrmntTransactions(transactions); file1.exportToFile();
This is what I get as exception:
java.io.NotSerializableException: m_media_cdstore.Stock at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at java.util.ArrayList.writeObject(ArrayList.java:570) 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:597) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)