Obtuvo NoClassDefFoundError al pasar el map de lambda
Creo una aplicación para Android usando Kotlin, y hay algo extraño con lambda. Paso mapOf(1 to {...}, 2 to {...})
y obtengo NoClassDefFoundError
o ClassNotFoundException
.
Intento reescribirlo en el escritorio y get el mismo, pero con diferente rastro de stack.
- Kotin Cómo especificar la label de devolución cuando se incluye en Lambda
- ¿Cómo escribir lambdas con generics en kotlin?
- Usar interfaces funcionales con types de funciones en Kotlin
- Función anónima asincrónica en Kotlin? (expresiones lambda)
- `break` y` continue` en `forEach` en Kotlin
fun main(args: Array<String>) { call(mapOf( 1 to { "asd" }, 2 to { 999 } )) } fun call(x: Map<Int, () -> Any>) { }
Este es el rastro de la stack:
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
- Tienda lambda en una variable en kotlin
- Funciones de mayor order de Kotlin en el proyecto de Java
- por qué kotlin lambda descomstackdo en código java es (Function0) null.INSTANCE
- ¿Por qué no puedo usar lambda para la interfaz en kotlin?
- Tipo de function de Kotlin en su lugar interfaz funcional lambda
- Tipo de function con receptor en Scala
- java.lang.NoClassDefFoundError $$ inlined $ forEach $ lambda $ 1 en Kotlin
- Kotlin: ¿Cómo puedo invocar un campo lambda que tiene un tipo genérico de su class?
No es un problema en tu código. Es un problema con la ejecución de su aplicación. Kotlin viene con su propia biblioteca de classs estándar kotlin-runtime.jar
. Deberías tener esta biblioteca en classpath:
java -cp $KOTLIN_HOME/lib/kotlin-runtime.jar:MyApp.jar com.my.AppKt
o debe comstackr la aplicación con -include-runtime
:
kotlinc app.kt -include-runtime -d MyApp.jar
- ¿Cuáles son las diferencias entre MutableMap y Map en Kotlin?
- ¿Por qué no puedo pasar la interfaz en kotlin a veces?