Kotlin在初始化期间崩溃 - CollectionsKt.first

时间:2018-02-28 16:25:09

标签: android kotlin

每当我的Android应用程序初始化kotlin类时,我都会看到崩溃。从堆栈跟踪中,我看到它来自BuiltInsLoader.Companion对象的静态初始化器:

  

kotlin.collections.CollectionsKt ___ CollectionsKt.first   (CollectionsKt___CollectionsKt.java:166)   kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader $伴侣。   (BuiltInsLoader.java:38)   kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader。   (BuiltInsLoader.java)   kotlin.reflect.jvm.internal.impl.builtins.KotlinBuiltIns.createBuiltInsModule   (KotlinBuiltIns.java:150)   kotlin.reflect.jvm.internal.impl.platform.JvmBuiltIns。   (JvmBuiltIns.java:56)   kotlin.reflect.jvm.internal.impl.platform.JvmBuiltIns。   (JvmBuiltIns.java:31)   kotlin.reflect.jvm.internal.components.RuntimeModuleData $ Companion.create   (RuntimeModuleData.java:54)   kotlin.reflect.jvm.internal.KDeclarationContainerImpl $数据$ moduleData $ 2.invoke   (KDeclarationContainerImpl.java:35)   kotlin.reflect.jvm.internal.ReflectProperties $ LazySoftVal.invoke   (ReflectProperties.java:93)   kotlin.reflect.jvm.internal.ReflectProperties $ Val.getModuleData   (ReflectProperties.java:32)   kotlin.reflect.jvm.internal.KClassImpl $数据$ $描述2.invoke   (KClassImpl.java:46)   kotlin.reflect.jvm.internal.ReflectProperties $ LazySoftVal.invoke   (ReflectProperties.java:93)   kotlin.reflect.jvm.internal.ReflectProperties $ Val.getDescriptor   (ReflectProperties.java:32)   kotlin.reflect.jvm.internal.KClassImpl.getDescriptor   (KClassImpl.java:172)   kotlin.reflect.jvm.internal.KClassImpl.getConstructorDescriptors   (KClassImpl.java:186)   kotlin.reflect.jvm.internal.KClassImpl $数据$ $的构造2.invoke   (KClassImpl.java:90)   kotlin.reflect.jvm.internal.ReflectProperties $ LazySoftVal.invoke   (ReflectProperties.java:93)   kotlin.reflect.jvm.internal.ReflectProperties $ Val.create   (ReflectProperties.java:32)

反编译的静态块如下所示:

BuiltInsLoader.Companion var0 = new BuiltInsLoader.Companion();
            $$INSTANCE = var0;
            ServiceLoader var10000 = ServiceLoader.load(BuiltInsLoader.class, BuiltInsLoader.class.getClassLoader());
            Intrinsics.checkExpressionValueIsNotNull(var10000, "ServiceLoader.load(Built…::class.java.classLoader)");
            Object var1 = CollectionsKt.first((Iterable)var10000);

还有其他人遇到过此次崩溃吗?如果是这样,你如何解决这个初始化错误?

2 个答案:

答案 0 :(得分:3)

如果在运行时缺少kotlin-reflect正常工作所需的某个资源文件,则会发生此异常。该文件位于META-INF/services/kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader。请确认在构建过程中没有工具将其删除,并且它会出现在最终应用程序中。

Kotlin追踪器中的相关问题:https://youtrack.jetbrains.com/issue/KT-20575

答案 1 :(得分:0)

也许:

packagingOptions {
    exclude 'META-INF/services/kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader'
}

可能会帮助