Crash on loading serialized object from intent in To-Many case
See original GitHub issuehi, the issue is, I have a Receipt class with an arraylist of items. so I used ToMany relation and changed arraylist to To-Many and in ReceiptItem class created a new field with To-One relationship. Its working fine and saving in 2 tables properly.
@Entity
public class Receipt implements Serializable {
public ToMany<ReceiptItem> receipt_items;
....
}
@Entity
public class ReceiptItem implements Serializable {
public ToOne<Receipt> receiptToOne;
}
I am sending my receipt object from one activity to another activity by serialization and getting in another activity. receipt = (Receipt) (intent.getSerializableExtra(“key_receiptobject”));
No issues and this is working fine.
Now for proper One-To-Many relationship I added, @Backlink annotation.
@Entity
public class Receipt implements Serializable {
@Backlink
public ToMany<ReceiptItem> receipt_items;
....
}
and my app crashes on this line, receipt = (Receipt) (intent.getSerializableExtra(“key_receiptobject”));
Can you please help me to resolve this.
Issue Basics
- ObjectBox version : 1.4.0
- Reproducibility: always
Logs & stackstraces
E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{}: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = abc.sales.entity.Receipt) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5459) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = abc.sales.entity.Receipt) at android.os.Parcel.readSerializable(Parcel.java:2512) at android.os.Parcel.readValue(Parcel.java:2315) at android.os.Parcel.readArrayMapInternal(Parcel.java:2614) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getSerializable(BaseBundle.java:992) at android.os.Bundle.getSerializable(Bundle.java:880) at android.content.Intent.getSerializableExtra(Intent.java:5468) at abc.sales.Activities.sale.ITPrintReceiptActivity.onCreate(ITPrintReceiptActivity.java:129) at android.app.Activity.performCreate(Activity.java:6259) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2382) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5459) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: java.lang.ClassNotFoundException: long at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:324) at android.os.Parcel$2.resolveClass(Parcel.java:2498) at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657) at java.io.ObjectInputStream.readNewClass(ObjectInputStream.java:1512) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:755) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454) at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242) at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454) at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242) at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454) at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242) at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835) at java.io.Obje 01-19 22:58:22.752 7470-7488/abc.sales D/FA: Logging event (FE): _ae, Bundle[{_o=crash, timestamp=1516382902748, fatal=1}] 01-19 22:58:23.008 7470-7470/abc.sales E/AndroidRuntime: FATAL EXCEPTION: main Process: abc.sales, PID: 7470 java.lang.RuntimeException: Unable to start activity ComponentInfo{abc.sales/abc.sales.Activities.sale.ITPrintReceiptActivity}: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = abc.sales.entity.Receipt) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2429) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5459) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = abc.sales.entity.Receipt) at android.os.Parcel.readSerializable(Parcel.java:2512) at android.os.Parcel.readValue(Parcel.java:2315) at android.os.Parcel.readArrayMapInternal(Parcel.java:2614) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.BaseBundle.getSerializable(BaseBundle.java:992) at android.os.Bundle.getSerializable(Bundle.java:880) at android.content.Intent.getSerializableExtra(Intent.java:5468) at abc.sales.Activities.sale.ITPrintReceiptActivity.onCreate(ITPrintReceiptActivity.java:129) at android.app.Activity.performCreate(Activity.java:6259) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1130) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2382) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5459) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: java.lang.ClassNotFoundException: long at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:324) at android.os.Parcel$2.resolveClass(Parcel.java:2498) at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1641) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:657) at java.io.ObjectInputStream.readNewClass(ObjectInputStream.java:1512) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:755) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454) at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242) at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454) at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242) at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1835) at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:761) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940) at java.io.ObjectInputStream.readFieldValues(ObjectInputStream.java:1113) at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:454) at java.io.ObjectInputStream.readObjectForClass(ObjectInputStream.java:1345) at java.io.ObjectInputStream.readHierarchy(ObjectInputStream.java:1242) at java.io.ObjectInputStream.readN
Issue Analytics
- State:
- Created 6 years ago
- Comments:7 (4 by maintainers)
@jesualex Don’t do it. Android does not support this right now. Instead just pass the ID and get the object in the new activity/fragment/… -ut
i have the same bug, any solution? @greenrobot-team