Intereting Posts
Какой тип времени компиляции я должен назначить для получения возвращаемого значения java.util.Map <TextAttribute,?> Kotlin: UnsupportedOperationException для reified generic с оператором get / set Отключить генерацию META-INF / * в проекте kotlin Как клонировать или копировать список в kotlin Инструменты статического анализа для языка программирования Kotlin? Kotlin + Intelij + HtmlUnit: Ни одна из следующих функций не может быть вызвана с предоставленными аргументами Использование RxJava с сбросом Handler Message.what value Настройка высоты и ширины изображения Anko для match_parent Частный геттер и публичный сеттер для собственности Котлин Как получить / положить Kotlin Внутренняя карта или Карта карты Kotlin vs. Java: функция вызова с параметром лямбда NoClassDefFoundError для класса Kotlin в тесте JUnit во время выполнения Я сейчас разрабатываю приложение для Android с Kotlin, но произошла ошибка: CompilationException: не удалось встроить метод в 'readText' java.lang.ClassNotFoundException: com.intellij.junit5.JUnit5IdeaTestRunner, используя spek в kotlin Ссылка за закрытым классом в Котлине?

Gradle Project: java.lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics

Я работаю над проектом Java, и в рамках этого проекта я сделал первую попытку с Kotlin. Я начал конвертировать некоторые классы в Kotlin с конвертером JavaToKoltin, представленным в Intellij Idea. В частности, мои пользовательские исключения теперь превращаются в Котлин. Но с этим обработка исключений больше не работает.
Если я MyCustomKotlinException.kt одно из своих пользовательских исключений (например, MyCustomKotlinException.kt ) в java-коде, исключение не будет найдено (см. Код ниже).

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

Так может кто-нибудь объяснить мне, почему исключение не поймает. MyCustomKotlinException наследуется от Kotlins RuntimeException , которое является просто псевдонимом java.lang.RuntimeException .

 // MyCustomKotlinException.kt package foo class MyCustomKotlinException(err: String) : RuntimeException(err) 

Обновить:
Я разбил часть броска на 2 строки (создание экземпляра и метание) и обнаружил, что проблема заключается не в метании. Блок try остается после создания экземпляра. Что-то не так с моим созданием экземпляра этого класса Kotlin?

Update2:
Я добавил второй блок catch с Throwable и поймал следующий Throwable.

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

Update3:
Изменен заголовок для исправления ошибок и исправлена ​​проблема с добавлением всех файлов проекта в jar (см. Ответ ниже). Добавление KLLL во время выполнения lible к gradle не работает для меня.

Solutions Collecting From Web of "Gradle Project: java.lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics"

Добавление всех файлов проекта в банку устранило проблему для меня. Я добавил следующую строку в мой 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) } } } 

Вам нужно настроить свой проект с помощью kotlin. Итак, в Android Studio:

  1. нажмите Tools => kotlin => Настроить kotlin в проекте

  2. Затем в диалоговом окне: Все модули, содержащие файлы kotlin

  3. и выберите версию

  4. нажмите ОК

Готово.

Я хочу сказать, что вы пытаетесь запустить код Kotlin без библиотеки kotlin-runtime

Проверьте, какую систему вы используете, и добавьте необходимый файл jar. Вы можете убедиться, что это ваша проблема, упаковав проект в файл .jar и запустив его с помощью библиотеки времени выполнения

Имел ту же проблему, скомпилировав мой проект с помощью Ant в консоли. Я выпустил kotlin-stdlib.jar в classpath, и проблема ушла.