#android #kotlin #noclassdeffounderror
#Android #kotlin #ошибка noclassdeffounderror
Вопрос:
Я пишу приложение для Android с использованием Kotlin.
Я получаю ошибку NoClassFoundError для java.util.stream.Stream.
Ни в коем случае в моем приложении я не использую этот класс.
Это происходит, когда я открываю объявление и, похоже, является частью процесса сериализации. Это происходит не на всех моих устройствах. Только на моем старом (5.1.1). Это также происходит не во всех действиях.
Я предполагаю, что это связано с тем, что он пытается сериализовать. Однако я даже не уверен, с чего начать.
java.lang.NoClassDefFoundError: java.util.stream.Stream
at libcore.reflect.InternalNames.getClass(InternalNames.java:55)
at java.lang.Class.getDexCacheType(Class.java:479)
at java.lang.reflect.ArtMethod.getDexCacheType(ArtMethod.java:191)
at java.lang.reflect.ArtMethod.getReturnType(ArtMethod.java:145)
at java.lang.reflect.Method.getReturnType(Method.java:184)
at java.lang.Class.getDeclaredMethods(Class.java:771)
at java.io.ObjectStreamClass.computeSerialVersionUID(ObjectStreamClass.java:566)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:279)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1055)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:268)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1055)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:268)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1055)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:268)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1554)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at android.os.Parcel.writeSerializable(Parcel.java:1389)
at android.os.Parcel.writeValue(Parcel.java:1341)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:644)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1034)
at android.os.Parcel.writeBundle(Parcel.java:669)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2919)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3296)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.util.stream.Stream" on path: DexPathList[[zip file "/data/app/il.co.anykey.games.cardflip-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at libcore.reflect.InternalNames.getClass(InternalNames.java:53)
at java.lang.Class.getDexCacheType(Class.java:479)
at java.lang.reflect.ArtMethod.getDexCacheType(ArtMethod.java:191)
at java.lang.reflect.ArtMethod.getReturnType(ArtMethod.java:145)
at java.lang.reflect.Method.getReturnType(Method.java:184)
at java.lang.Class.getDeclaredMethods(Class.java:771)
at java.io.ObjectStreamClass.computeSerialVersionUID(ObjectStreamClass.java:566)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:279)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1055)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:268)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1055)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:268)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:1055)
at java.io.ObjectStreamClass.createClassDesc(ObjectStreamClass.java:268)
at java.io.ObjectStreamClass.lookupStreamClass(ObjectStreamClass.java:1087)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1554)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:959)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:360)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1384)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at android.os.Parcel.writeSerializable(Parcel.java:1389)
at android.os.Parcel.writeValue(Parcel.java:1341)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:644)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1034)
at android.os.Parcel.writeBundle(Parcel.java:669)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2919)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3296)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Suppressed: java.lang.ClassNotFoundException: java.util.stream.Stream
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 45 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
Комментарии:
1. Я попадаю в точно такую же ситуацию на устройстве Android 5.1. Это происходит, когда я запускаю действие, чтобы выбрать файл из файловой системы, или даже нажимаю кнопку home на устройстве, и состояние активности моего приложения сохраняется …. вы когда-нибудь находили решение для этого?
Ответ №1:
Как сказано в java.util.stream
документации, требуется API уровня 24 или выше. Android 5.1.1 — это API 22, у него нет java.util.stream.Stream
класса.
Комментарии:
1. Дело в том, что я не использую Stream. Проблема была вызвана тем фактом, что я расширял класс, в котором есть метод, использующий Stream (хотя я его никак не использовал). Кажется, что сериализация этого вызывает проблемы.