Ошибка NoClassFoundError: java.util.stream.Stream

#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 (хотя я его никак не использовал). Кажется, что сериализация этого вызывает проблемы.