Class not found when unmarshalling:

1. Problem description and solution

Description of the problem: This problem is mainly caused by the fact that some versions of mobile phones use Intent to directly transfer Parcelable data, and the Parcelable type is generated by default. Examples are as follows:

@Parcelize
data class FunctionResultBean(
    val isComplete: Boolean = false, //是否完成
    val completeDesc: String = "none", //完成结果的描述
): Parcelable

The delivery method is as follows:

 fun launch(
            cxt: Context,
            desArray: ArrayList<FunctionResultBean> = arrayListOf()
        ) {
    
    
            val intent = Intent(cxt, PcmResultActivity::class.java)
            intent.putParcelableArrayListExtra(KEY_FUNCTION_SUB_DES_ARRAY, desArray)
            cxt.startActivity(intent)
        }

There are many ways to modify, here is a more convenient one,

 fun launch(
            cxt: Context,
            desArray: ArrayList<FunctionResultBean> = arrayListOf()
        ) {
    
    
            val intent = Intent(cxt, PcmResultActivity::class.java)
            val bundle = Bundle()
            bundle.putParcelableArrayList(KEY_FUNCTION_SUB_DES_ARRAY, desArray)
            intent.putExtra("KEY",bundle)
            cxt.startActivity(intent)
        }

Another way is to generate the Parcelable class by yourself, instead of using the default one, and replace the default loader BootClassLoader with your own class loader when generating it yourself, as follows:

		mHashMap = in.readHashMap(HashMap.class.getClassLoader())
		# 修改如下
        mHashMap = in.readHashMap(TestBean.class.getClassLoader());


Another way is to add a loader when using Intent to pass data

intent.setExtrasClassLoader(ImagesSet::class.java.classLoader)

In addition, it can also be converted into a byte array and passed, which appears in Alarms.java

Two, the log

Class not found when unmarshalling
com.speedclean.master.expert.function.finish.FunctionResultBean
java.lang.ClassNotFoundException: 
com.speedclean.master.expert.function.finish.FunctionResultBean                                    
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel.readParcelableCreator(Parcel.java:2827)
at android.os.Parcel.readParcelable(Parcel.java:2781)
at android.os.Parcel.readValue(Parcel.java:2684)
at android.os.Parcel.readListInternal(Parcel.java:3114)
at android.os.Parcel.readArrayList(Parcel.java:2335)
at android.os.Parcel.readValue(Parcel.java:2705)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3053)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getString(BaseBundle.java:1155)
at android.content.Intent.getStringExtra(Intent.java:8135)
at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:739)
at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:677)
at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:1646)
at com.android.server.am.ActivityStarter.execute(ActivityStarter.java:619)
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6745)
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6626)
at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6617)
at android.app.IActivityManager$Stub.onTransact$startActivity$(IActivityManager.java:10870)
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:111)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:4181)
at android.os.Binder.execTransact(Binder.java:739)
Caused by: java.lang.ClassNotFoundException: com.speedclean.master.expert.function.finish.FunctionResultBean
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:1346)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:1406)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel.readParcelableCreator(Parcel.java:2827) 
at android.os.Parcel.readParcelable(Parcel.java:2781) 
at android.os.Parcel.readValue(Parcel.java:2684) 
at android.os.Parcel.readListInternal(Parcel.java:3114)
at android.os.Parcel.readArrayList(Parcel.java:2335) 
at android.os.Parcel.readValue(Parcel.java:2705)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3053)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288) 
at android.os.BaseBundle.unparcel(BaseBundle.java:232) 
at android.os.BaseBundle.getString(BaseBundle.java:1155)
at android.content.Intent.getStringExtra(Intent.java:8135) 
at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:739) 
at com.android.server.am.ActivityStarter.startActivity(ActivityStarter.java:677) 
at com.android.server.am.ActivityStarter.startActivityMayWait(ActivityStarter.java:1646)
at com.android.server.am.ActivityStarter.execute(ActivityStarter.java:619) 
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6745) 
at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6626)
at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6617) 
at android.app.IActivityManager$Stub.onTransact$startActivity$(IActivityManager.java:10870) 
at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:111) 
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:4181) 
at android.os.Binder.execTransact(Binder.java:739)
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

3. Reference link

  1. Class not found when unmarshalling problem occurs when using Parcelable
  2. Class not found when unmarshalling: com.xx.xx.bean.ImagesSet
  3. Parcel: Class not found when unmarshalling: custom class

Guess you like

Origin blog.csdn.net/Mr_Tony/article/details/129929146