问题
IDEA中,启动Spring boot项目,控制台提示org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException的异常。
org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException
at org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread(SilentExitExceptionHandler.java:90)
at org.springframework.boot.devtools.restart.Restarter.immediateRestart(Restarter.java:180)
at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:164)
at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:554)
at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:73)
at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:49)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:70)
at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:47)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:302)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1214)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1203)
at com.ux.receive.ReceiveApplication.main(ReceiveApplication.java:17)
解决方案
问题出在启动入口文件 ***Application.java中,
public class ReceiveApplication { private final static Log logger = LogFactory.getLog(ReceiveApplication.class); public static void main(String[] args) { try { SpringApplication.run(ReceiveApplication.class, args); logger.info("Receive Service项目启动完成"); } catch (Exception e){ e.printStackTrace(); } } }
把“SpringApplication.run(ReceiveApplication.class, args);”放到try catch外面(或删掉try catch),或在catch中不要抛出异常,就能正常显示了。
实际上在启动的时候,也没有必要try catch。
这个问题是在spring-boot-devtools引起的,但只有少数情况下会出现这种异常,如果有就按上述方法解决。
另外,spring-boot-devtools可以使开发调试时程序随时热部署,不用每次手工启停,很大程度提高了我们调试效率。