Ошибка класса Kotlin NoClassDefFoundError

У меня есть проект Android, в котором используются следующие библиотеки:

  1. AutoValue
  2. Кинжал2
  3. RxJava
  4. Ретроламбда

Я пытаюсь добавить поддержку Kotlin, чтобы постепенно перенести проект на Kotlin. Вот что я сделал.

  1. Добавлена ​​зависимость Kotlin.
  2. Преобразовал один из классов в класс Kt и перешел в src/main/kotlin/..package..

  3. Добавлен котлин в исходный набор. sourceSets {main.java.srcDirs + = 'src / main / kotlin'}

  4. Когда я делаю чистую сборку и развертываю приложение, я получаю исключение NoClassDefFoundError. Однако, если я развернусь снова, он будет работать нормально. Какие-либо предложения? У меня нет аннотации к преобразованному мной классу, поэтому я не применил плагин kapt.

Примечание: я использую последнюю версию kotlin 1.0.4. Также у меня отключен мгновенный запуск.


person bond    schedule 23.09.2016    source источник
comment
вы можете сообщить об этом в систему отслеживания проблем Kotlin, потому что это больше похоже на то, что требует сортировки и потенциально может сообщать как Жук.   -  person Jayson Minard    schedule 23.09.2016
comment
Используете ли вы какие-либо сгенерированные классы в своем новом файле .kt? Вероятно, во время компиляции kotlin этого класса не существует.   -  person lllyct    schedule 15.08.2017


Ответы (3)


Зайдите в Files > Settings и выключите полностью Instant Run, я имею в виду, что все флажки должны быть сняты.

Очистить и перестроить проект.

Тогда это должно сработать

Изменить. Как вы сказали, Живой поиск отключен - с помощью protip проверьте свою конфигурацию и обновите Gradle и Android Studio, если вы не используете последнюю версию.

Согласно этому проблема, изменение версии плагина Gradle с 2.10 на 2.14.1 может помочь.

Совет: используйте комбинацию Ctrl + Shift + A, чтобы найти такие команды, как

  • Configure Kotlin in Project

  • Configure Kotlin Updates

  • Convert Java File to Kotlin

person piotrek1543    schedule 23.09.2016
comment
Да, у меня полностью отключен мгновенный запуск, и я запускаю AS 2.2 с версией инструмента сборки 2.2.0 с gradle 2.14.1. - person bond; 23.09.2016
comment
изменить инструменты сборки на 24.0.3 - person piotrek1543; 23.09.2016
comment
эта проблема была решена после использования обновленного плагина. Также, когда это происходит, мне просто нужно было очистить рабочее место. - person bond; 17.08.2017

Сначала вам нужно настроить студию Android с помощью kotlin, для этого необходимо добавить плагин kotlin в студию Android, а затем нужно добавить зависимости, а затем преобразовать классы java в kotlin, пожалуйста, посмотрите это видео.

https://www.youtube.com/watch?v=DN2EDdycZ3c

person Lovekush Vishwakarma    schedule 13.07.2017

Добавляйте классы Kotlin к kt при вызове их из Java.

В противном случае добавьте @file:JvmName("Utils") перед пакетом в классе Kotlin, если вы должны вызвать его в java с любым пользовательским именем, которое вы хотите, например Utils в этом случае.

более подробную информацию можно найти здесь

person AyoGitNg    schedule 29.08.2017