Gradle Projekt: java.lang.NoClassDefFoundError: kotlin/jvm/interne/Interna

Arbeite ich an einem Java-Projekt und in diesem Projekt habe ich meine ersten versuche mit Kotlin. Ich begann die Umwandlung einige Klassen zu Kotlin mit der JavaToKoltin Konverter in die Intellij Idea. Unter anderem meine benutzerdefinierte Ausnahmen werden nun umgewandelt, um Kotlin. Aber mit dieser exception handling funktioniert nicht mehr korrekt.

Wenn ich werfe eine meiner benutzerdefinierten Ausnahmen (z.B. MyCustomKotlinException.kt) innerhalb der java-code ist, wird die Ausnahme nicht abgefangen wird (siehe code unten).

//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 ...
        }
    }
}

Also kann jemand mir erklären, warum die exception nicht fangen. MyCustomKotlinException erbt von Kotlins RuntimeException, das ist nur ein alias zu java.lang.RuntimeException.

//MyCustomKotlinException.kt
package foo

class MyCustomKotlinException(err: String) : RuntimeException(err)

Update:

Ich teilte die werfen teilweise in 2 Zeilen (Beispiel Schöpfung und werfen) und festgestellt, dass das problem ist nicht das werfen. Der try-block ist Links nach der instanzerstellung. Ist irgendetwas falsch mit meinem Beispiel Erstellung dieser Kotlin Klasse?

Update2:

Hinzugefügt habe ich einen zweiten catch-block mit Throwable und die folgenden Throwable gefangen ist.

java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
...
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics

Update3:

Änderte den Titel zu korrigieren Fehler und örtlich festgelegtes problem mit dem hinzufügen von alle Projekt-Dateien in jar (siehe Antwort unten).
Hinzufügen der Kotlin-runtime-lib in gradle funktioniert bei mir nicht.

  • Bitte geben Sie eine vollständige minimale reproduzierbare Beispiel zum Beispiel mit, dass der kotlin-source-code.
  • ist das genug für Sie?
  • Es muss genug sein, so dass die Menschen können repro der Ausgabe. Sieht aus wie jetzt.
  • Ich kann nicht reproduzieren Sie das Problem mit dem code, den Sie zur Verfügung gestellt.
  • Ja, Sie haben Recht. Ich habe gerade versucht mit diesem Beispiel-und es funktioniert. Aber die exception-Klasse sieht gleich aus, aber mit einem anderen Namen und auch das Beispiel Schöpfung, in dem try-catch ist die gleiche, also keine Ahnung, warum es funktioniert, nur für das Beispiel.
  • Und auch die Instanz, die Schaffung einer anderen custom Kotlin-Klasse funktioniert einwandfrei, also scheint es ein problem mit der exception-Klasse.
  • Verwandte: stackoverflow.com/questions/4871656/...

InformationsquelleAutor FreshD | 2017-05-26
Schreibe einen Kommentar