Подтвердить что ты не робот

Точка останова при "throw new SilentExitException()" в Eclipse + Spring Загрузка

Каждый раз, когда я запускаю проект загрузки Spring в режиме отладки в Eclipse IDE (Spring Tool Suite), поток останавливается при "throw new SilentExitException();" даже без точки останова.

Некоторое решение, чтобы избежать такого поведения?

org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread() (строка 53):

public static void exitCurrentThread() {
    throw new SilentExitException();
}

Это начинается с обновления до 1.3.0.

Spring Набор инструментов Версия: 3.7.0.RELEASE Идентификатор сборки: 201506290649 Платформа: Eclipse Luna SR2 (4.4.2)

4b9b3361

Ответ 1

Это, к сожалению, проблема с новым модулем spring-boot-devtools (см. https://github.com/spring-projects/spring-boot/issues/3100). Мы используем этот трюк, чтобы убить основной поток, чтобы мы могли заменить его на перезагружаемую версию. До сих пор я не нашел способа предотвратить срабатывание точки прерывания отладки.

В настоящее время вы можете переключить флажок "приостановить выполнение на неперехваченных исключениях" в настройках Java → Debug, чтобы предотвратить его.

Ответ 2

Поскольку Eclipse в режиме отладки уже позволяет ограниченную горячую установку, я считаю, что перегрузчик в большинстве случаев контрпродуктивен, и поэтому я решил отключить его:

System.setProperty("spring.devtools.restart.enabled", "false");

Ссылка: https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-restart-disable

Поскольку это исключение выдается перегрузчиком, это также решает эту проблему. Обратите внимание, что вам придется использовать метод System.setProperty вместо установки его в application.properties.

Ответ 3

Попробуйте запустить devtools во время выполнения области:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
</dependency>