java.io.NotSerializableException is thrown when the object is not eligible for the serialization. You must implement the Serializable interface to make the class eligible for the serialization. This is a marker interface which tells the JVM that the class can be serialized. Look at the below example.
Employee.java
Employee class which not implementing the serializable interface.
package javabeat.net.io; public class Employee { private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } }
NotSerializableExceptionExample.java
This class tries to serialize the object by writing to the ObjectOutputStream. However, it throws the exception.
package javabeat.net.io; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; /** * java.io.NotSerializableException Example * * @author Krishna * */ public class NotSerializableExceptionExample { public static void main(String[] args) throws IOException{ //Create FileOutputStream to create file FileOutputStream out = new FileOutputStream("employee.dat"); //Create ObjectOutputStream ObjectOutputStream outputStream = new ObjectOutputStream(out); //Create objects Employee obj = new Employee(); obj.setId("001"); //Write objects to stream outputStream.writeObject(obj); //Always close the stream outputStream.close(); } }
java.io.NotSerializableException Thrown
To fix this exception, Employee class must implement the serializable interface.
Exception in thread "main" java.io.NotSerializableException: javabeat.net.io.Employee at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at javabeat.net.io.NotSerializableExceptionExample.main(NotSerializableExceptionExample.java:13)