Spring boot排除内置Tomcat后,无法启动

Spring boot排除内置Tomcat后,无法启动

Spring boot中排除内置tomcat后无法使用Application启动类,启动项目,包如下错误:

Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.getWebServerFactory(ServletWebServerApplicationContext.java:210)

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180)

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:160)

... 8 common frames omitted


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
风间影月 2022-08-18 10:05:14

排除这一个不够的,你看下打包章节里面有好几个。另外项目本身就无法下载后直接启动的,依赖的东西太多了。建议跟着课程做一下哈~~~

  • 提问者 慕粉4194439 #1

    根据视频做的一下配置,打包成war文件后,能够部署到服务器上,并且能够运行起来;但是此时,在Idea中,使用Application类启动项目时,就会报上面的错


    配置的代码:

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="..."

        <!-- 打包war [1] -->

        <packaging>war</packaging>


        <dependencies>

            <!-- Web启动器 -->

            <dependency>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-starter-web</artifactId>

                <version>2.5.5</version>

                <!-- 打包war [2] 排除Spring Boot内置的Tomcat -->

                <exclusions>

                    <exclusion>

                        <groupId>org.springframework.boot</groupId>

                        <artifactId>spring-boot-starter-tomcat</artifactId>

                    </exclusion>

                </exclusions>

            </dependency>


            <!-- 打包war [3] 添加依赖 -->

            <dependency>

                <groupId>javax.servlet</groupId>

                <artifactId>javax.servlet-api</artifactId>

                <scope>provided</scope>

            </dependency>

        </dependencies>

    </project>




    // 打包war [4] 增加war的启动类

    public class WarStarterApplication extends SpringBootServletInitializer {


        @Override

        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

            // 指向Application这个springboot启动类

            return builder.sources(Application.class);

        }

    }






    2022-09-04 22:23:07
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师