Recording is interrupted; java.io.NotSerializableException

I am trying to read all objects from a file. The following is a snippet of a method for retrieving a list of objects from a file.

public List displayParties() {
        ObjectInputStream ois = null;
        List<RegisterParty> results = new ArrayList();
        try {
            FileInputStream fis = new FileInputStream("/media/user/disk2/myapp/assignment/party.ser");
            ois = new ObjectInputStream(fis);
            while (true) {
                System.out.println(" inside while true");
                results.add((RegisterParty) ois.readObject());
                System.out.println(results);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        catch (Exception ex){
                ex.printStackTrace();

        } finally{
            try {
                ois.close();
            }catch (IOException ex){
                ex.printStackTrace();
            }
        }
        return results;
    }

RegisterParty Class:

public class RegisterParty implements Serializable {
    String bookingPersonName;
    String childName;
    String childAge;
    String theme;
    String foodAlergies;
    String noOfGuest;
    String specialGuest;

    public String getBookingPersonName() {
        return bookingPersonName;
    }

    public void setBookingPersonName(String bookingPersonName) {
        this.bookingPersonName = bookingPersonName;
    }

    public String getChildName() {
        return childName;
    }

    public void setChildName(String childName) {
        this.childName = childName;
    }

    public String getChildAge() {
        return childAge;
    }

    public void setChildAge(String childAge) {
        this.childAge = childAge;
    }

    public String getTheme() {
        return theme;
    }

    public void setTheme(String theme) {
        this.theme = theme;
    }

    public String getFoodAlergies() {
        return foodAlergies;
    }

    public void setFoodAlergies(String foodAlergies) {
        this.foodAlergies = foodAlergies;
    }

    public String getNoOfGuest() {
        return noOfGuest;
    }

    public void setNoOfGuest(String noOfGuest) {
        this.noOfGuest = noOfGuest;
    }

    public String getSpecialGuest() {
        return specialGuest;
    }

    public void setSpecialGuest(String specialGuest) {
        this.specialGuest = specialGuest;
    }

    public String toString(){
        return bookingPersonName+" "+childName+" "
                +childAge+" "+foodAlergies+" "+theme+" "+noOfGuest+" "+specialGuest;
    }
}

But getting the following exception:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: models.RegisterParty
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1354)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at helper.HelperFunctions.displayParties(HelperFunctions.java:39)
    at services.PartyOperations.listAllParties(PartyOperations.java:64)
    at assignment.App.main(App.java:34)
    at helper.HelperFunctions.saveParty(HelperFunctions.java:24)
    at services.PartyOperations.registerParty(PartyOperations.java:53)
    at assignment.App.main(App.java:28)
Caused by: java.io.NotSerializableException: models.RegisterParty
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    at helper.HelperFunctions.saveParty(HelperFunctions.java:20)
    at services.PartyOperations.registerParty(PartyOperations.java:52)
    ... 1 more

RegisterParty implements a serializable interface. This is a menu-based application, so when I save an object to a file, its saving is successful. But call the method to get the whole object in the list, throw it an exception. Any idea why?

This method successfully serializes the object:

public void saveParty(RegisterParty registerParty){
    try {
        FileOutputStream fout = new FileOutputStream("/media/user/disk2/myapp/assignment/party.txt");
        ObjectOutputStream oos = new ObjectOutputStream(fout);
        oos.writeObject(registerParty);
        oos.close();
        System.out.println("Successfull Register");
        System.out.println("========Select you choice========");
        App.main(str);
    }
    catch (Exception ex){
            ex.printStackTrace();
    }
}
+4
source share
2 answers

When I implement the Serializable object, I add the serialVersionUID static variable to the class:

private static final long serialVersionUID = -1892561327013038124L;

eclipse android. , IntelliJIdea.

! , .

0

fileToRead fileToWrite .

    FileInputStream fis = new FileInputStream("/media/user/disk2/myapp/assignment/party.ser");
    FileOutputStream fout = new FileOutputStream("/media/user/disk2/myapp/assignment/party.txt");
0

All Articles