Eclipse + Spring Boot 中“throw new SilentExitException()”处的断点

每次我在 Eclipse IDE(Spring 工具套件)的调试模式下运行 Spring Boot 项目时,即使没有断点,线程也会停止在行。throw new SilentExitException();

有没有一些解决方案可以避免这种行为?

org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread() (line 53):

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

在升级到 1.3.0 里程碑后,这种情况开始发生。

弹簧工具套件

Version: 3.7.0.RELEASE
Build Id: 201506290649

平台:

Eclipse Luna SR2 (4.4.2)

答案 1

不幸的是,这是新模块的已知问题(请参见 https://github.com/spring-projects/spring-boot/issues/3100)。我们使用这个技巧来杀死主线程,以便我们可以用可重载的版本替换它。到目前为止,我还没有找到一种方法来防止触发调试断点。spring-boot-devtools

现在,您可以在 Java ->“调试”首选项中切换“在未捕获的异常时挂起执行”复选框,以防止其发生。


答案 2

将该属性添加为 VM 参数:

-Dspring.devtools.restart.enabled=false

enter image description here

这样,您就不必更改代码,就像使用以下内容时的情况一样:

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

推荐