`
kane_xie
  • 浏览: 144597 次
社区版块
存档分类
最新评论

Spring boot内嵌的tomcat启动失败

阅读更多

根据这篇guide创建了一个简单的spring boot应用,能运行且成功的访问。但移植到现有项目(基于hbase)中的时候,却报出以下错误:

 

 

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
	at java.util.concurrent.FutureTask.report(FutureTask.java:122)
	at java.util.concurrent.FutureTask.get(FutureTask.java:188)
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:801)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	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:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
	... 6 more
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet(Ljava/lang/String;Ljavax/servlet/Servlet;)Ljavax/servlet/ServletRegistration$Dynamic;
	at org.springframework.boot.context.embedded.ServletRegistrationBean.onStartup(ServletRegistrationBean.java:156)
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:219)
	at org.springframework.boot.context.embedded.tomcat.ServletContextInitializerLifecycleListener.lifecycleEvent(ServletContextInitializerLifecycleListener.java:54)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5343)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 6 more

 

 

一般碰到NoSuchMethodError,要么是没有引入dependency,要么是jar包冲突。在这里应该是servlet-api.jar有冲突。

 

用命令mvn dependency:tree查看项目所有dependencies,发现有以下依赖:

 

[INFO] | +- org.apache.hbase:hbase-server:jar:0.96.1.1-cdh5.0.2:compile
...
[INFO] | | +- org.mortbay.jetty:servlet-api-2.5:jar:6.1.14:compile
...
[INFO] | | +- org.apache.hadoop:hadoop-common:jar:2.3.0-cdh5.0.2:compile
...
[INFO] | | | +- javax.servlet:servlet-api:jar:2.5:compile
...

 

hbase-server中也有servlet-api的jar包,尝试将其移除:

 

<dependency>
	<groupId>org.apache.hbase</groupId>
	<artifactId>hbase-server</artifactId>
	<version>0.96.1.1-cdh5.0.2</version>
	<exclusions>
		<exclusion>
			<groupId>org.mortbay.jetty</groupId>
			<artifactId>servlet-api-2.5</artifactId>
		</exclusion>
		<exclusion>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
		</exclusion>
	</exclusions>
</dependency>

 

运行成功。

2
2
分享到:
评论

相关推荐

    Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动

    Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动 本文主要介绍了Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动的相关知识点,用于帮助开发者更好地理解Spring Boot的启动过程。 一、...

    59-Spring Boot内嵌Tomcat配置1

    内嵌的 Tomcat 容器是 Spring Boot 默认的 Web 服务器,使得我们可以无需额外配置即可运行 Java Web 应用。在本篇文章中,我们将探讨如何对 Spring Boot 内嵌的 Tomcat 进行个性化配置。 首先,Spring Boot 提供了 ...

    Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解

    Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解 Spring Boot启动过程(五)之Springboot内嵌Tomcat对象的start教程详解是Spring Boot启动过程的重要组件之一,本文将详细介绍Springboot内嵌...

    LEARNING SPRING BOOT 3.0 - THIRD EDITION

    《Learning Spring Boot 3.0 - 第三版》是...书中还会深入讨论Spring Boot的核心特性,比如自动配置、健康检查、内嵌的Tomcat或Jetty服务器、Spring MVC用于构建RESTful API,以及数据访问层的集成,包括JPA和Hibernat

    Spring Boot整合MyBatis加外部Tomcat启动-demo.zip

    《Spring Boot整合MyBatis与外部Tomcat启动详解》 在现代Java开发中,Spring Boot以其简洁、快速的特性受到了广大开发者的喜爱。而MyBatis作为轻量级的持久层框架,以其灵活的SQL映射功能,为数据库操作提供了便利...

    Spring-Boot-Reference-Guide, Spring Boot Reference Guide中文翻译 -《Spring Boot参考指南》.zip

    3. 内嵌式Servlet容器:Spring Boot支持内嵌Tomcat、Jetty或Undertow,无需额外部署WAR文件。 4. 健康检查:提供健康检查API,用于监控系统状态。 5. 配置文件:通过application.properties或application.yml进行...

    Spring Boot实战派(源码)

    - Spring Boot支持内嵌Tomcat、Jetty等Web服务器,无需额外部署,简化了开发流程。 4. **健康检查与Actuator** - Actuator提供了一组端点,用于监控和管理应用的健康状况、指标、日志等,是微服务治理的重要组件...

    十分钟上手spring boot

    - 处理Spring Boot应用启动失败的情况。 - **23.2. 自定义Banner** - 显示自定义的启动Banner。 - **23.3. 自定义SpringApplication** - 通过自定义SpringApplication来扩展Spring Boot的功能。 - **23.4. 流式...

    Spring Boot讲义.pdf

    Spring Boot的设计初衷是为了快速启动和运行Spring应用程序,避免了传统的Spring项目中复杂繁琐的配置和依赖管理。传统开发模式下,开发者需要花费大量时间进行配置和解决依赖冲突问题,而这些工作并不是业务逻辑...

    Spring Boot 教程、技术栈示例代码,快速简单上手教程。

    - **内嵌服务器**:Spring Boot 支持内嵌 Tomcat、Jetty 或 Undertow 服务器,无需额外部署,简化了开发流程。 - **运行器**:提供了命令行接口(CLI),方便快速创建和运行 Spring 应用。 - **健康检查**:内置健康...

    Spring Boot 进阶笔记(详细全面) 中文PDF完整版.pdf

    3. **内嵌服务器**:Spring Boot 内置了如 Tomcat 或 Jetty 这样的 Web 服务器,使得无需额外配置即可启动服务。 4. **命令行工具**:Spring Boot 提供了命令行界面,允许快速创建和运行 Spring 应用。 5. **健康...

    内嵌tomcat实例代码.rar

    3. **Spring Boot与内嵌Tomcat**: Spring Boot默认集成了内嵌Tomcat,使得开发基于Spring的应用变得简单。通过`@SpringBootApplication`注解,Spring Boot会自动配置并启动内嵌的Tomcat服务器。 4. **META-INF目录*...

    Spring Boot揭秘 PDF

    例如,如果项目中包含了`spring-boot-starter-web`起步依赖,那么Spring Boot将自动配置一个内嵌的Tomcat服务器。 2. 嵌入式服务器:Spring Boot允许在应用中直接包含Web服务器(如Tomcat或Jetty),无需单独部署到...

    Spring Boot Tutorial 《Spring Boot 教程》

    2. **嵌入式Web服务器**:Spring Boot支持内嵌Tomcat或Jetty,无需额外部署到外部容器,简化了开发和测试流程。 3. **自动配置(Auto-configuration)**:Spring Boot通过条件注解来自动配置应用,比如`@...

    记一次通过Arthas定位解决springboot中内嵌tomcat问题.docx

    本文将讲述如何使用Arthas工具来定位和解决Spring Boot中内嵌Tomcat问题,通过记录一次实际的定位和处理流程,来分享解决问题的经验和方法。 一、问题背景 在Spring Boot中,内嵌Tomcat是非常常见的做法,但是在...

    Spring Boot in Action.pdf 英文版

    4. **内嵌Web服务器**:Spring Boot支持内嵌Tomcat、Jetty等Web服务器,使得部署更加简单。书中会讲解如何配置和使用这些服务器,并演示如何创建RESTful服务。 5. **Spring MVC**:作为Spring Boot的主要Web开发...

    spring-boot-2.7.0.zip源码

    9. **嵌入式服务器**:Spring Boot支持内嵌的Tomcat、Jetty等服务器,源码中,`EmbeddedServletContainerFactory`接口及其实现类用于创建和配置内嵌服务器。 10. **错误处理**:Spring Boot提供了一套统一的错误...

    Spring Boot in Action 英文版

    Spring Boot还支持内嵌的Servlet容器,比如Tomcat、Jetty或Undertow,这意味着开发者可以不用部署到传统的WAR文件中,而是直接运行一个JAR文件,并且应用程序会启动内嵌的Servlet容器。这简化了部署过程,使得开发...

    Spring Boot-实战

    Spring Boot的核心特性包括自动配置、内嵌Web服务器(如Tomcat或Jetty)、健康检查、Actuator等。自动配置是Spring Boot的一大亮点,它基于“约定优于配置”的原则,通过“spring-boot-starter”模块来引入特定功能...

    spring-boot-中文参考手册

    Spring Boot支持内嵌Tomcat、Jetty或Undertow web服务器,无需额外进行打包和部署,使得应用可以直接以jar形式运行。 ### 四、健康检查与Actuator Actuator是Spring Boot提供的一个模块,用于提供应用的健康检查、...

Global site tag (gtag.js) - Google Analytics