ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [S...

今天第一次遇到Failed to start component [StandardEngine[Catalina].StandardHost[localhost].错误,并且在错误提示的后半段出现了刚刚删除的工程

因此出现这种错误的原因可能有:

1.tomcat存在缓存

  右键点击tomcat-->Clean Tomcat  Work Directory.. --> Clean.. 

  对tomcat进行清理

2.tomcat自己出现了问题

  将tomcat删除,重新添加并配置一下tomcat

3.其他情况...

 


Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParser

原因还是依赖了spring boot 内部提供的tomcat的问题,将上面pom的配置改成下面这样即可(作用域设置成依赖外部tomcat容器提供的jsp):

 

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

  

Springboot tomcat-embed-jasper依赖说明

 

  使用过Springboot的同学都知道其已内置tomcat(spring-boot-starter-web),无需打war包,打成jar包直接运行。最近学习使用Springboot发现项目中的pom文件引入了tomcat-embed-jasper(对jsp的支持的依赖)但scope为provided。

        于是不明白感觉springboot的tomcat应该自带了tomcat-embed-jasper吧,遂将pom文件该依赖删掉,eclipse启动项目无报错,访问页面发现所有的jsp页面都会被下载而不能被访问。但是又一个令我疑惑的问题是其依赖scope为provided,也就是说打包时该依赖不会被包含在lib包内,但是我的jar启动的页面访问却没有问题。

        以上说明一个问题:springboot自带的tomcat并没有携带tomcat-embed-jasper的依赖。

        又做了一个实验:将tomcat-embed-jasper的scope去掉后,打成jar包,启动项目时报错==>jasper的jar包冲突。

        结论猜测:检查pom文件后,猜测一定是spring-boot-maven-plugin(1.4.2.RELEASE)插件在打包时自动额外的添加tomcat-embed-jasper的支持。而我们在工具中启动项目时并没有打包,所以需要该依赖对我们eclipse中项目jsp的支持,为防止其打包冲突,遂设置其scope为provided。

转载于:https://www.cnblogs.com/songanwei/p/9336433.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值