Run Spring-boot's main using IDE

A workaround that is strongly inspired from https://youtrack.jetbrains.com/issue/IDEA-140041 is to start your main class with the test classpath (which includes the embedded servlet.)

Steps (IntelliJ 16):

  1. Run -> Edit Configurations -> Add new configuration -> Pick Application type.
  2. Set Main class to <your.main.class>
  3. Set Use classpath of module to <*>_test (the test module!)
  4. Ok and Run it!

I believe this could be related to https://youtrack.jetbrains.com/issue/IDEA-107048

IntelliJ IDEA is not injecting the provided dependencies into the CLASSPATH and as Andy stated this is why spring is unable to create the embedded servlet container.

They have a feature request since 2005 about this: https://youtrack.jetbrains.com/issue/IDEABKL-99

Workarounds mentioned in the comments includes having a fake module with the necessary libs and using it as classpath, using the -Xbootclasspath JVM argument or using custom maven profiles for running (compiled) vs building (provided).


I was able to make this work by changing the scope of the spring-boot-starter-tomcat dependency to "compile" under Project structure->Dependencies tab. This doesn't effect pom.xml but allows this dependencies to be available to spring boot run configuration

Click here for image on where to change this setting in idea