Intereting Posts
Возможно ли скомпилировать Kotlin Native без проверок времени выполнения? Получить идентификатор ресурса android из строки Котлинское преобразование объектов в объекты Как использовать kapt из командной строки (с kotlinc)? Kotlin – Коллекция карт сортировки Как выполнить экспоненциальную повторную попытку повторения на kotlin coroutines Kotlin + Intelij + HtmlUnit: Ни одна из следующих функций не может быть вызвана с предоставленными аргументами Отсутствует функция Kotlin View setEnabled? Kotlin Аннотационный процессор + AutoService Robolectric test и LiveData Генериры Котлина Массив <T> приводит к «Невозможно использовать T как параметр типа reified. Вместо этого используйте класс, но List <T> не делает Создание экземпляра прослушивателя интерфейса в Котлине Настройка Gradle с Kotlin только один сопутствующий объект разрешен для каждого класса в Котлине Как сортировать на основе / сравнивать несколько значений в Котлин?

Получил NoClassDefFoundError при прохождении карты лямбда

Я создаю приложение для Android, используя Kotlin, и есть что-то странное с лямбдой. Я mapOf(1 to {...}, 2 to {...}) и получаю NoClassDefFoundError или ClassNotFoundException .

Я пытаюсь переписать его на рабочем столе и получить то же самое, но с другой трассировкой стека.

  fun main(args: Array<String>) { call(mapOf( 1 to { "asd" }, 2 to { 999 } )) } fun call(x: Map<Int, () -> Any>) { } 

Это трассировка стека:

 Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at TestKt.main(test.kt) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.jetbrains.kotlin.runner.AbstractRunner.run(runners.kt:61) at org.jetbrains.kotlin.runner.Main.run(Main.kt:109) at org.jetbrains.kotlin.runner.Main.main(Main.kt:119) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 8 more 

Это не проблема в коде. Это проблема с запуском приложения. Kotlin поставляется со своей стандартной библиотекой классов kotlin-runtime.jar . Вы должны иметь эту библиотеку в classpath:

 java -cp $KOTLIN_HOME/lib/kotlin-runtime.jar:MyApp.jar com.my.AppKt 

или вы должны скомпилировать приложение с -include-runtime :

 kotlinc app.kt -include-runtime -d MyApp.jar