java.io.InvalidClassException: no valid constructor
<p>When I complie below program, I am getting exception as </p>

<pre><code>java.io.InvalidClassException: Files.SerializationMain; Files.SerializationMain; no valid constructor
    at java.io.ObjectStreamClass.checkDeserialize(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at Files.SerializationClass.main(SerializationClass.java:71)
Caused by: java.io.InvalidClassException: Files.SerializationMain; no valid constructor
    at java.io.ObjectStreamClass.&lt;init&gt;(Unknown Source)
    at java.io.ObjectStreamClass.lookup(Unknown Source)
    at java.io.ObjectOutputStream.writeObject0(Unknown Source)
    at java.io.ObjectOutputStream.writeObject(Unknown Source)
    at Files.SerializationClass.main(SerializationClass.java:61)
</code></pre>

<p>I read somewhere that when we serialize any child class then its base class constructor gets fired.</p>

<pre><code>class Parent123
 {
int age;
String name;

Parent123(int age,String name)
{
    System.out.println("We are in Parent123 Constructor");
    this.age=age;
    this.name=name;
}  
}

  class SerializationMain extends Parent123 implements Serializable
 {
int data1;
String data2;

SerializationMain(int data1,String data2)
{
    super(20,"test");
    this.data1=data1;
    this.data2=data2;
}

public void setData1(int data1)
{
    this.data1=data1;
}
public void setData2(String data2)
{
    this.data2=data2;
}
public String getData2()
{
    return data2;
}
public int getData1()
{
    return data1;
}
}

  public class SerializationClass {


public static void main(String args[])
{
    System.out.println("Before Creating Object");
    SerializationMain s1=new SerializationMain(10,"Anurag");
    try
    {
        System.out.println("Serializing Object");
        FileOutputStream fis=new FileOutputStream("Test.ser");
        ObjectOutputStream ois=new ObjectOutputStream(fis);
        ois.writeObject(s1);
    }
    catch(Exception e1)
    {
        e1.printStackTrace();
    }
    try
    {
        FileInputStream fis=new FileInputStream("Test.ser");
        ObjectInputStream ois=new ObjectInputStream(fis);
        Object o1=ois.readObject();
        SerializationMain s2=(SerializationMain)o1;
    }
    catch(Exception e1)
    {
        e1.printStackTrace();
    }

}

   }//End of SerializationClass
</code></pre>
