Spring boot jar 无法启动嵌入式 Tomcat

Spring boot jar Unable to start embedded Tomcat

我已经使用 eclipse IDE 创建了 spring 休息服务。当我 运行 使用调试配置时它在 eclipse 中工作正常但是当我将它导出为可执行 JAR 并且 运行 使用下面的命令

java -jar cs.jar

它给我以下错误:

    org.springframework.context.ApplicationContextException: Unable to start embedde
d container; nested exception is org.springframework.boot.context.embedded.Embed
dedServletContainerException: Unable to start embedded Tomcat
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationConte
xt.onRefresh(EmbeddedWebApplicationContext.java:124)
        at org.springframework.context.support.AbstractApplicationContext.refres
h(AbstractApplicationContext.java:474)
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationConte
xt.refresh(EmbeddedWebApplicationContext.java:109)

为什么它不能像 jar 一样工作?

您需要检查您是否在您的类路径中包含了 servlet-api jar,如果是,请将其删除。

如果servlet-api在classpath中,它被包含在WEB-INF/lib中然后抛出错误,因为servlet容器已经有servlet api jar.

从 maven 或 gradle 中删除 servlet-api 依赖关系,或者如果此依赖关系由任何其他模块添加,则排除 servlet api 依赖关系,如下所示

<dependency>
    <groupId><groupId></groupId>
    <artifactId><some dependency></artifactId>
    <version><version></version>
    <exclusions>
        <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>