Точка останова при "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)
Ответы
Ответ 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>