question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Crash on loading serialized object from intent in To-Many case

See original GitHub issue

hi, 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:open
  • Created 6 years ago
  • Comments:7 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
greenrobot-teamcommented, Aug 13, 2018

@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

0reactions
jesualexcommented, Aug 2, 2018

i have the same bug, any solution? @greenrobot-team

Read more comments on GitHub >

github_iconTop Results From Across the Web

When I try to pass object with intent it crashes my application
If you have a custom Serializable class like HumLogController, you have to make sure that all its fields are Serializable as well, ...
Read more >
Unity 2022.1.0b9
Serialization : Fixed crash loading asset bundles containing assets with editor only fields in play mode. This was true only for asset bundles...
Read more >
Java static code analysis: Fields in a "Serializable" class ...
Fields in a Serializable class must themselves be either Serializable or transient even if the class is never explicitly serialized or deserialized. For ......
Read more >
Configuration - Spark 2.3.0 Documentation - Apache Spark
Dynamically Loading Spark Properties; Viewing Spark Properties ... The default of Java serialization works with any Serializable Java object but is quite ...
Read more >
C++ Object Persistence with ODB - Code Synthesis
However, in this case, the database operations will only be able to load the ... object of interest in the result stream with...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found