Не работает hot deploy для классов экранов

Здравствуйте!

Не подскажите, почему может не работать hot deploy для классов экранов? Hot deploy cрабатывает только для дескрипторов экранов. Не работает ни в каких проектах, даже в только что созданных с минимальным набором стандартных компонентов.

  • версия Jmix-Studio 1.3.9
  • версия IntelliJ IDEA 2021.3.2

Попробуйте в настройках плагина отключить Hot deploy compiled classes
У меня не работает (винда).

@sergeevms.33, вы эту настройку имеете ввиду?
image
Включаю галку, выключаю - никакого влияния она не оказывает. Hot Deploy не происходит. На панели EventLog - тишина.
По какому событию этот hot deploy должен инициироваться? Я нажимаю Ctrl-S - ничего не происходит. Нажимаю Ctrl-Shift-F9 для перекомпляции класса - запускается таск gradle по пересборке проекта. У меня на это уходит 22 секунды даже на пустом проекте. При этом никакого обновления класса в приложении всё-равно не происходит

1 симпатия

Попробуйте сделать File → Invalidate Caches, со всеми “галочками”. У меня тоже не работал hot deploy, после выполнения данной функции, стало работать. Hot Deploy Enable в настройках jmix стоит. Jmix 1.4.1, Idea 2022.2.4

1 симпатия

Извиняюсь, ввел вас в заблуждение.
Тот флажок, который я имел в виду, отсутствует в плагине jmix (присутствует в cuba)…

@timaskraft, спасибо огромное! После сброса кеша Idea начались попытки выполнить hot deploy! Но пока безуспешно:

Hot deploy compilation errors:
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:3: error: package com.company.dprojects.tmpp1.entity does not exist
import com.company.dprojects.tmpp1.entity.User;
                                         ^
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:4: error: package io.jmix.ui.component does not exist
import io.jmix.ui.component.Button;
                           ^
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:5: error: package io.jmix.ui.model does not exist
import io.jmix.ui.model.CollectionLoader;
                       ^
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:6: error: package io.jmix.ui.navigation does not exist
import io.jmix.ui.navigation.Route;
                            ^
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:8: error: package org.springframework.beans.factory.annotation does not exist
import org.springframework.beans.factory.annotation.Autowired;
                                                   ^
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:14: error: cannot find symbol
public class UserBrowse extends StandardLookup<User> {
                                ^
  symbol: class StandardLookup
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:10: error: cannot find symbol
@UiController("tmpp1_User.browse")
 ^
  symbol: class UiController
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:11: error: cannot find symbol
@UiDescriptor("user-browse.xml")
 ^
  symbol: class UiDescriptor
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:12: error: cannot find symbol
@LookupComponent("usersTable")
 ^
  symbol: class LookupComponent
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:13: error: cannot find symbol
@Route("users")
 ^
  symbol: class Route
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:14: error: cannot find symbol
public class UserBrowse extends StandardLookup<User> {
                                               ^
  symbol: class User
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:18: error: cannot find symbol
    private Button createBtn;
            ^
  symbol:   class Button
  location: class UserBrowse
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:21: error: cannot find symbol
    public void onBeforeShow(BeforeShowEvent event) {
                             ^
  symbol:   class BeforeShowEvent
  location: class UserBrowse
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:7: error: package io.jmix.ui.screen does not exist
import io.jmix.ui.screen.*;
^
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:17: error: cannot find symbol
    @Autowired
     ^
  symbol:   class Autowired
  location: class UserBrowse
D:\PROJECTS\tmp-p1\src\main\java\com\company\dprojects\tmpp1\screen\user\UserBrowse.java:20: error: cannot find symbol
    @Subscribe
     ^
  symbol:   class Subscribe
  location: class UserBrowse
16 errors

Хотя проект нормально собирается и запускается. Осталось ещё где-то немного поднастроить: :thinking:

Проблема решилась! Оказалось, что мешалась переменная окружения CLASSPATH в переменных окружения, оставшаяся от другого ПО. После того, как переменная была удалена hot deploy заработал! Всем спасибо за помощь, особенно @timaskraft :smiley:

1 симпатия