Springboot application启动missing EmbeddedServletContainerFactory错误解决

前几天有同学IDE启动Springboot Application main方法时,提示Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean。 代码肯定是没有问题的,为什么同样会的代码我本地可以执行,他启动时却报上面的错误了呢。

因为我们本地启动Springboot 应用,需要用到内建的tomcat容器。 pom.xml 配置如下, scope 为provided。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

Intellij IDEA 并不会默认将 provided的依赖库加入到运行的classpath中,所以就会导致启动时无法找到EmbeddedWebApplicationContext, 以至于启动失败。

如何设置Intellij IDEA默认把provided 的依赖库加入到class path中呢, 选中你要执行的Application的java文件(main方法所在的class),右键 -> Modify run configuration 。 弹出一个窗口。 右上角有个蓝色的 Modify options 链接,点击后勾选 include dependencies with “provided” scope。 操作之后,我们再进行启动Springboot application, 就成功了。

当然如果不是上面的IDE设置的问题,那么大概率就是你的代码问题。 需要检查你的application主方法的类是否设置了springboot的一些必要的配置注解。

此篇文章已被阅读50 次

Add a Comment

邮箱地址不会被公开。 必填项已用*标注