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>
我已经使用 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>