[英]Getting a class not found exception / noclassdeffound error on some Android devices
我有一个实现Parcelable的类,这使我抛出NoClassDefFoundError
,在某些设备上未找到类异常。 目前,我仅在Samsung Android设备上收到此错误。 在Nexus 5,Nexus 4和Android仿真器上,它可以正常运行,但由于某些原因在三星上无法运行。 我没有在调试中使用三星设备,因此仅在三星远程测试实验室进行了测试。
同样,所讨论的课程也没什么特别的。 一个简单的类,仅从包裹中写入/读取的long,string和int。 我检查了读写顺序。 此外,没有从库中引用该类。
ERROR 06-23 09:14:13.578 892 1507 Parcel Class not found when unmarshalling: path.class
ERROR 06-23 09:14:13.578 892 1507 Parcel Caused by: java.lang.NoClassDefFoundError: path/class
ERROR 06-23 09:14:13.578 892 1507 Parcel Caused by: java.lang.ClassNotFoundException: Didn't find class "path.class" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
该类可包裹部分的代码。
public class Sprint implements Parcelable {
private long mStartTime;
private long mEndTime;
private int mDaysInSprint;
private String mSprintTitle;
private int mId;
private Sprint(Parcel source) {
mStartTime = source.readLong();
mEndTime = source.readLong();
mDaysInSprint = source.readInt();
mSprintTitle = source.readString();
mId = source.readInt();
}
public static final Parcelable.Creator<Sprint> CREATOR = new Parcelable.Creator<Sprint>() {
@Override
public Sprint createFromParcel(Parcel source) {
return new Sprint(source);
}
@Override
public Sprint[] newArray(int size) {
return new Sprint[size];
}
};
@Override
public int describeContents() {
return hashCode();
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeLong(mStartTime);
dest.writeLong(mEndTime);
dest.writeInt(mDaysInSprint);
dest.writeString(mSprintTitle);
dest.writeInt(mId);
}
由于API版本兼容性,可能导致此错误。 请检查并使用最新版本的API。 不确定,但是据我所知这是原因
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.