关键词:
【中文标题】Spring Boot Tomcat 容器部署错误【英文标题】:Spring Boot Tomcat Container Deployment Errors 【发布时间】:2015-02-06 07:48:04 【问题描述】:我想将我的 Spring Boot 应用程序作为 WAR 部署到 Tomcat 容器,但 Tomcat 无法启动容器。我遵循了 Spring Boot Reference 中的文档Traditional Deployment Section。容器的线程大小设置为 -Xss 4068,但我仍然遇到堆栈溢出错误。
这是堆栈跟踪:
Dec 08, 2014 12:01:13 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Tomcat\customer\webapps\customer-site-0.0.1-SNAPSHOT\WEB-
INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2.
Offending class: javax/servlet/Servlet.class
Dec 08, 2014 12:01:15 AM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[customers-prototype.mydomain.com].StandardContext[/customer-site-0.0.1-SNAPSHOT]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/customer-site-0.0.1-SNAPSHOT] due to a ***Error. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies. The class hierarchy being processed was [com.ibm.db2.jcc.am.mf->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object->java.lang.Object]
at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:2126)
at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2072)
at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1947)
at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1913)
at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1898)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1330)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5380)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
Dec 08, 2014 12:01:15 AM org.apache.catalina.startup.HostConfig deployWAR
SEVERE: Error deploying web application archive C:\Tomcat\customer\webapps\customer-site-0.0.1-SNAPSHOT.war
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component
[StandardEngine[Catalina].StandardHost[customers-prototype.mydomain.com].StandardContext[/customer-site-0.0.1-SNAPSHOT]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1081)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1877)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Dec 08, 2014 12:01:15 AM org.apache.catalina.startup.HostConfig deployWAR
我的 pom.xml 具有以下 Spring Boot 依赖项,其中 spring-boot-starter-tomcat 范围设置为 provided,如文档中所述。
POM.XML
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>$spring.security.version</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>$spring.security.version</version>
</dependency>
更新:额外的 pom 依赖:
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>db2jcc4</artifactId>
<version>9.7.0.9</version>
</dependency>
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>db2jcc_license</artifactId>
<version>9.7.0.9</version>
</dependency>
我的主类扩展了文档中描述的 SpringBootServletInitializer:
CustomerSiteMain.java:
@Configuration
@ComponentScan("com.mydomain")
@EnableAutoConfiguration
public class CustomerMain extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
return application
.showBanner(true)
.parent(Global.class)
.sources(CustomerMain.class)
.profiles("container");
public static void main(String[] args)
SpringApplication.run(CustomerMain.class, args);
@Bean
@Profile(CustomerSiteProfiles.STANDALONE)
public ServletRegistrationBean h2Console()
ServletRegistrationBean reg = new ServletRegistrationBean(new WebServlet(), "/console/*");
reg.setLoadOnStartup(1);
return reg;
@Bean
public ServletRegistrationBean servletRegistrationBean()
return new ServletRegistrationBean(new PhotoSheetPDFServlet(), "/items/factsheet/*");
【问题讨论】:
“com.ibm.db2.jcc.am.mf”从何而来?您能否展示您的 pom 中添加该依赖项的部分? @BrianClozel 那是 DB2 JDBC 驱动程序。我在代码的 pom 部分添加了额外的依赖信息。 【参考方案1】:以上内容也帮助了我。我遇到了类似的问题,并不断收到这样的 WebappClassLoader 日志:
2015-03-06 20:32:53,741 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO: validateJarFile(/usr/local/apache-tomcat-7.0.54/webapps/gs-producing-web-service-0.1.0/WEB-INF/lib/tomcat-embed-core-8.0.15.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
2015-03-06 20:32:53,742 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO: validateJarFile(/usr/local/apache-tomcat-7.0.54/webapps/gs-producing-web-service-0.1.0/WEB-INF/lib/tomcat-embed-el-8.0.15.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/el/Expression.class
这是我在加载 Web 应用程序时遇到的这个严重错误的线索。
2015-03-06 20:32:54,704 org.apache.catalina.startup.HostConfig deployWAR SEVERE: Error deploying web application archive /usr/local/apache-tomcat-7.0.54/webapps/gs-producing-web-service-0.1.0.war
在我的案例中,我正在开发一个 Web 服务,而我的 pom.xml 中的这些依赖项(Web 服务不是 Web)
<dependencies>
<!-- tag::springws[] -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-ws</artifactId>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
</dependency>
<!-- end::springws[] -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
但我忘记在安装 maven 之前也进行清理。这花了我几个小时,因为我的 tomcat 库还在那里。 用户请注意,当您关注 Springs https://spring.io/guides/gs/convert-jar-to-war/ 和 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file 时,您还应该进行 maven clean
这对于更快速的开发来说非常有用。谢谢
【讨论】:
【参考方案2】:您的 Tomcat 似乎正在尝试加载一些已加载的类。 尝试从 spring-boot-starter-web 依赖项中排除嵌入的 tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
【讨论】:
在 tomcat 上部署 Spring Boot WAR 文件显示错误 404
】在tomcat上部署SpringBootWAR文件显示错误404【英文标题】:SpringBootWARfiledeploymentontomcatshowsError404【发布时间】:2019-02-2721:55:59【问题描述】:我尝试在独立的Tomcat7.0.91上部署Gradle+SpringBoot2+Angular2应用WAR文件。如果我使用提供的jar... 查看详情
在容器 tomcat 服务器上更改已部署(Spring Boot)war 的上下文路径。所以它不是 demo-0.01-SNAPSHOT
】在容器tomcat服务器上更改已部署(SpringBoot)war的上下文路径。所以它不是demo-0.01-SNAPSHOT【英文标题】:Changingthecontextpathofdeployed(SpringBoot)waronacontainertomcatserver.Soitisnotdemo-0.01-SNAPSHOT【发布时间】:2017-10-0622:50:27【问题描述】:... 查看详情
spring boot rest tomcat部署报错
】springbootresttomcat部署报错【英文标题】:Springbootresttomcatdeploymenterror【发布时间】:2016-11-0408:03:25【问题描述】:我使用Springrest和Springboot创建了一个restapi。当我尝试在linux服务器上的tomcat上部署它时,出现以下错误:rrorduringSe... 查看详情
在 tomcat 9 上部署 Spring Boot Web 应用程序时,出现错误“无法检索系统属性'spring.xml.ignore'”
】在tomcat9上部署SpringBootWeb应用程序时,出现错误“无法检索系统属性\\\'spring.xml.ignore\\\'”【英文标题】:OnDeployingSpringbootwebappattomcat9,gettingerror"Couldnotretrievesystemproperty\'spring.xml.ignore\'"在tomcat9上部署SpringBootWeb应用程序时... 查看详情
Spring Boot Tomcat部署不起作用Tomcat 7
】SpringBootTomcat部署不起作用Tomcat7【英文标题】:SpringBootTomcatdeployementnotworkingTomcat7【发布时间】:2019-08-1105:20:58【问题描述】:我尝试在Tomcat7中部署我的SpringBoot应用程序,但在启动Tomcat服务器时出现此错误:org.apache.catalina.Life... 查看详情
在tomcat中部署后无法访问spring boot应用程序
】在tomcat中部署后无法访问springboot应用程序【英文标题】:Cannotaccessspringbootapplicationafterdeploymentintomcat【发布时间】:2016-07-0312:23:46【问题描述】:我使用Springboot创建了一个RESTAPI。我使用gradle作为我的构建工具。我已经使用嵌... 查看详情
部署为 .war 时的 Spring-Boot 日志记录配置
】部署为.war时的Spring-Boot日志记录配置【英文标题】:Spring-BootLoggingconfigurationwhendeployedas.war【发布时间】:2014-10-1821:47:14【问题描述】:我有一个简单的spring-boot应用程序被打包为能够部署到外部Tomcat容器的.war文件。我在类路... 查看详情
intellijideaspringboot使用第三方tomcat以及部署
...录以备查阅。一、第三方Tomcat部署部署部分参考的是:把spring-boot项目部署到tomcat容器中目标:把spring-boot项目按照平常的web项目一样发布到tomcat容器下1.修改打包形式在pom.xml里设置<packaging>war</packaging><groupId>com.study... 查看详情
Spring boot:无法启动嵌入式 Tomcat servlet 容器
】Springboot:无法启动嵌入式Tomcatservlet容器【英文标题】:Springboot:UnabletostartembeddedTomcatservletcontainer【发布时间】:2017-09-2014:58:31【问题描述】:我是SpringBoot新手,在运行我的应用程序时遇到了错误。我正在学习一个教程,我相... 查看详情
Spring Boot - 独立 Tomcat / 外部 logback 文件被忽略
】SpringBoot-独立Tomcat/外部logback文件被忽略【英文标题】:SpringBoot-StandaloneTomcat/Externallogbackfileignored【发布时间】:2016-07-2915:16:11【问题描述】:我创建了一个版本为1.2.8的SpringBoot应用程序,我在其中使用外部Tomcat容器进行部署... 查看详情
在 tomcat 服务器中部署 spring boot 应用程序时出错
】在tomcat服务器中部署springboot应用程序时出错【英文标题】:Errorwhiledeployingthespringbootappintomcatserver【发布时间】:2018-11-3017:13:20【问题描述】:我正在尝试在tomcat服务器上部署SpringBoot应用程序,但出现严重错误[http-nio-8080-exec-5... 查看详情
在 docker 容器中重新部署 spring-boot 应用程序?
】在docker容器中重新部署spring-boot应用程序?【英文标题】:Redeployspring-bootapplicationindockercontainer?【发布时间】:2017-06-1907:50:04【问题描述】:我有一个spring-boot项目,我想在容器中自动重新部署我的jar。如何正确执行?到目前... 查看详情
Spring Boot 应用程序 - Tomcat 部署 - 无法确定合适的驱动程序类
】SpringBoot应用程序-Tomcat部署-无法确定合适的驱动程序类【英文标题】:Springbootapplication-Tomcatdeployment-Failedtodetermineasuitabledriverclass【发布时间】:2020-01-1409:02:46【问题描述】:从IDE运行时一切正常尝试在tomcat服务器中部署应用... 查看详情
使用 Tomcat 进行 Spring Boot 部署
】使用Tomcat进行SpringBoot部署【英文标题】:SpringbootdeployementwithTomcat【发布时间】:2020-06-0313:44:23【问题描述】:我目前正在部署一个应用程序,但由于某种原因它似乎无法完美运行。在编码时,我正在使用易于配置的IntellijSprin... 查看详情
带有端点的 Spring Boot 创建了两个 Tomcat 容器
】带有端点的SpringBoot创建了两个Tomcat容器【英文标题】:SpringbootwithendpointscreatestwoTomcatcontainers【发布时间】:2015-02-1822:52:22【问题描述】:我有一个带有以下配置的spring-bootjar:<dependency><groupId>org.springframework.boot</gro... 查看详情
列出所有已部署的 REST 端点(spring-boot、tomcat)
】列出所有已部署的REST端点(spring-boot、tomcat)【英文标题】:Listingalldeployedrestendpoints(spring-boot,tomcat)【发布时间】:2019-12-3117:20:34【问题描述】:我知道存在类似的问题,但如果仅适用于glassfish服务器。Listingalldeployedrestendpoint... 查看详情
Spring boot + tomcat 8.5 + mongoDB,AsyncRequestTimeoutException
】Springboot+tomcat8.5+mongoDB,AsyncRequestTimeoutException【英文标题】:Springboot+tomcat8.5+mongoDB,AsyncRequestTimeoutException【发布时间】:2019-10-2519:21:46【问题描述】:我创建了一个SpringBootWeb应用程序并将其部署到tomcat容器中。应用程序使用异... 查看详情
在 Tomcat 6 中部署 Spring Boot 应用程序(传统部署)
】在Tomcat6中部署SpringBoot应用程序(传统部署)【英文标题】:DeploySpringBootapplicationinTomcat6(Traditionaldeployment)【发布时间】:2019-08-1618:34:06【问题描述】:我试图在tomcat6中部署一个springboot应用程序(war)(当在tomcat7和更早版本... 查看详情