Проблемы при использовании kotlin

Добрый день.

Настроил поддержку kotlin, как описано тут.

  1. Перевел большинство сущностей в kt. Возникли проблемы в панели навигации:
    image
    При чем проблема не только в плагине студии, в представлении project это выглядит вот так:
    image
    Вложенные пакеты не раскрываются.

  2. Иногда есть проблемы при сборке. Т.е. добавляю kotlin-экран (или конвертирую в kt из java), жму Shift-F9, приложение запускается на отладку без проблем, но в рантайме экран приложением не находит, вываливая об этом excepption. Повторный запуск отладки решает проблему.
    При сборке gradlew clean assemble таких проблем не замечал, но долго приходится ожидать пока соберется widgetset.
    Может быть какую-то задачу добавить в Debug Configuration нужно/можно?

Добрый день! Можете приложить idea.log? (Help -> Show Logs in …)

Добрый день!
Держите.
idea_.7z (21.1 КБ)

На сколько я понимаю, у вас по мимо CUBA Studio установлен Jmix Studio. Проблема находится в плагине Jmix Studio, и была пофикшена во вчерашнем релизе. Однако из-за одного бага с версиями плагинов в Intellij Idea установить новую версию поверх текущей не получится, поэтому попробуйте удалить Jmix Studio и установить его заново. (В будущем удалять Jmix Studio для обновлении версии не понадобится).

1 симпатия

Действительно в нем. Спасибо.

Что-то по второму вопросу подсказать сможете?

Прошу прощения за долгое ожидание. Попробуйте включить debug логи ( CUBA -> Advanced -> Enable DEBUG Logging level) воспроизвести проблему и прислать idea.log еще раз.

Александр, доброго дня.
Не уверен, что тут помогут логи студии.

Сейчас добавляю TransactionalEventListener к сущности.
Перезапускаю - Shift-F9. Дебажу - слушатель не подцепился.
Перезапускаю еще раз - Shift-F9. Дебажу - подцепился.
Внес изменения. Перезапускаю - не подцепился.
Перезапускаю еще раз - подцепился.

Такое ощущение, что при сборке какие-то проблемы. Если все же нужны логи, я соберу.

Вы создали новый слушатель на котлине, или сконвертировали из java в котлин? У инкрементальной gradle компиляции есть такая особенность, что старые класс файлы не удаляются. Сложно сказать, в каком порядке их грузит класслоадер, но вполне возможно, что тут есть элемент случайности, и подхватывается то один скомпилированный класс (java) то другой (kotlin). В этом случае, без clean действительно не обойтись. Чтобы не пересобирать виджетсеты, можете попробовать запускать clean только у того модуля, в котором меняли код.

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

В этот раз это именно создание нового слушателя.

Здравствуйте!
Есть ли у вас возможность приложить тестовый проект, который воспроизводит проблему?