【问题标题】:Kotlin crashes during initialization - CollectionsKt.firstKotlin 在初始化期间崩溃 - CollectionsKt.first
【发布时间】:2018-02-28 16:25:09
【问题描述】:

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

kotlin.collections.CollectionsKt___CollectionsKt.first (CollectionsKt___CollectionsKt.java:166) kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoader$Companion。 (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$Data$moduleData$2.invoke (KDeclarationContainerImpl.java:35) kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke (反射属性.java:93) kotlin.reflect.jvm.internal.ReflectProperties$Val.getModuleData (反射属性.java:32) kotlin.reflect.jvm.internal.KClassImpl$Data$descriptor$2.invoke (KClassImpl.java:46) kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke (反射属性.java:93) kotlin.reflect.jvm.internal.ReflectProperties$Val.getDescriptor (反射属性.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$Data$constructors$2.invoke (KClassImpl.java:90) kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke (反射属性.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);

还有其他人经历过这种崩溃吗?如果是这样,你如何解决这个初始化错误?

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      也许:

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

      可能有帮助

      【讨论】:

        猜你喜欢
        • 2016-05-31
        • 1970-01-01
        • 2017-09-04
        • 1970-01-01
        • 2016-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多