Proyecto Gradle: java.lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics
Estoy trabajando en un proyecto de Java y dentro de este proyecto hice mi primer bash con Kotlin. Empecé a convertir algunas classs en Kotlin con el convertidor JavaToKoltin proporcionado en Intellij Idea. Entre otras, mis excepciones personalizadas ahora se convierten en Kotlin. Pero con esto, el event handling excepciones ya no funciona correctamente.
Si lanzo una de mis excepciones personalizadas (por ejemplo, MyCustomKotlinException.kt
) dentro del código java, la exception no queda atrapada (ver código a continuación).
// Example.java package foo import java.util.*; import java.lang.*; import java.io.*; import foo.MyCustomKotlinException; class Example { public static void main (String[] args) { try { // Do some stuff // if Error MyCustomKotlinException e = new MyCustomKotlinException("Error Message"); throw e; } catch (MyCustomKotlinException e) { // <-- THIS PART IS NEVER REACHED // Handle Exception } catch (Throwable e) { e.printStackTrace(); <-- This is catched } finally { // Finally ... } } }
Entonces, ¿alguien puede explicarme por qué la exception no es atrapada? MyCustomKotlinException
henetworkinga de Kotlins RuntimeException
, que es solo un alias de java.lang.RuntimeException
.
- Retrofit: get un cuerpo vacío en la actualización de respuesta
- Estudio Android convertido a Kotlin: use @JvmStatic en algunos casos
- ¿Es posible desestructurar las classs de datos 'instancia en class'?
- Kotlin con Spring DI: la propiedad lateinit no se ha inicializado
- Kotlin: ¿Para qué se llaman los arguments lambda?
// MyCustomKotlinException.kt package foo class MyCustomKotlinException(err: String) : RuntimeException(err)
Actualizar:
Dividí la parte de lanzamiento en 2 líneas (creación y lanzamiento de instancias) y descubrí que el problema no es el lanzamiento. El bloque try se deja después de la creación de la instancia. ¿Hay algún problema con la creación de mi instancia de esta class de Kotlin?
Actualización2:
Agregué un segundo bloque catch con Throwable
y atrapa el siguiente Throwable.
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics ... Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
Actualización3:
Se modificó el título para corregir el error y se corrigió el problema al agregar todos los files de proyecto a jar (ver respuesta a continuación). Agregar el Kotlin runtime lib a gradle no funciona para mí.
- Animar (desplazar) un ViewGroup bloquea vistas no relacionadas desde la animation hasta que finaliza
- Comparta el código entre la testing unitaria y las testings de instrumentación cuando use kotlin
- Kotlin - Comprender a los que se zambullen y los Setters
- Tema de cierre de PlaceAutoCompleteFragment
- Cómo crear una instancia de una class anónima que implementa una interfaz en Kotlin
- Habitación Android + Patrón Kotlin
- Comience la actividad de kotlin * .kt desde la actividad de java * .java?
- Pasando la aplicación a AndroidViewModel
Agregar todos los files del proyecto al file solucionó el problema. build.gradle
la siguiente línea a mi build.gradle
jar { manifest { attributes ... } // This line of code recursively collects and copies all of a project's files // and adds them to the JAR itself. One can extend this task, to skip certain // files or particular types at will from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } }
Voy a decir que estás tratando de ejecutar el código de Kotlin sin la biblioteca kotlin-runtime
Compruebe qué sistema está usando y agregue el file jar necesario. Puede verificar que este es su problema al empacar su proyecto en un file .jar
y ejecutarlo con la biblioteca de time de ejecución
Necesita configurar su proyecto con kotlin. Por lo tanto, en Android Studio: 1. click Herramientas => kotlin => Configurar kotlin en el proyecto 2. Luego, en la comprobación de dialog: Todo el module que contiene los files de kotlin 3. y select la versión 4. presione Aceptar Listo.
Tuve el mismo problema, comstackndo mi proyecto con Ant en la console. He editado kotlin-stdlib.jar en classpath y el problema se ha ido.
- ¿Por qué kotlin no permite que el map mutable covariante sea un delegado?
- Interfaz de Kotlin en una class de Java: Anulación accidental