ThinkingMonkey
ThinkingMonkey

Reputation: 12727

Java : Serializing an Object with Primitive Types. Get error java.io.NotSerializableException

The Class definition

private class classSerial implements Serializable {
    private static final long serialVersionUID = 1L;
    String vString;
    boolean vBool;
    long vLong;
    int vInt;

    classSerial(){
     //initialize members;
    }
}

I still get the error :

Caused by: java.io.NotSerializableException: com.example.....

When I try to do a writeObject (using an object of FileOutputStream) on an object of classSerial.


From what I have read, the data types that I have used, String,boolen,long,int are Serializable. So, I do not need to implement any methods.

What is it that I am missing here?


LOGCAT

09-16 19:58:26.170: W/dalvikvm(4278): threadid=1: thread exiting with uncaught exception (group=0x40018560)
09-16 19:58:26.201: E/AndroidRuntime(4278): FATAL EXCEPTION: main
09-16 19:58:26.201: E/AndroidRuntime(4278): java.lang.IllegalStateException: Could not execute method of the activity
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.view.View$1.onClick(View.java:2165)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.view.View.performClick(View.java:2506)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.view.View$PerformClick.run(View.java:9112)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.os.Handler.handleCallback(Handler.java:587)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.os.Looper.loop(Looper.java:130)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.app.ActivityThread.main(ActivityThread.java:3835)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.lang.reflect.Method.invokeNative(Native Method)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.lang.reflect.Method.invoke(Method.java:507)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at dalvik.system.NativeStart.main(Native Method)
09-16 19:58:26.201: E/AndroidRuntime(4278): Caused by: java.lang.reflect.InvocationTargetException
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.lang.reflect.Method.invokeNative(Native Method)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.lang.reflect.Method.invoke(Method.java:507)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at android.view.View$1.onClick(View.java:2160)
09-16 19:58:26.201: E/AndroidRuntime(4278):     ... 11 more
09-16 19:58:26.201: E/AndroidRuntime(4278): Caused by: java.io.NotSerializableException: com.example.testing.serialActivity
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1535)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at com.example.testing.serialActivity.login(login_activity.java:277)
09-16 19:58:26.201: E/AndroidRuntime(4278):     at com.example.testing.serialtest.login(serialtest.java:34)
09-16 19:58:26.201: E/AndroidRuntime(4278):     ... 14 more

Upvotes: 0

Views: 4230

Answers (1)

Peter Lawrey
Peter Lawrey

Reputation: 533660

The problem is likely to be that you have a inner class. i.e. its not static so it have a reference to the outer class which is not Serializable. This is why the check is there, to avoid serializing something you didn't intent to.

You will notice in the stack trace the class its complaining about is another class.

NotSerializableException: com.example.testingserialActivity

Try making the class

private static class ClassSerial implement Serializable

Upvotes: 3

Related Questions