org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].Standard

7 篇文章 0 订阅
4 篇文章 0 订阅

部署ssm项目出现以下异常

严重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ssmDemo]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@4971df0f]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
	at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4907)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5042)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 10 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [D:\tools\apache-tomcat-8.5.32\webapps\ssmDemo] is not valid
	at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748)
	at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 13 more

四月 10, 2020 3:32:48 下午 org.apache.catalina.startup.HostConfig deployDescriptor
严重: Error deploying configuration descriptor [D:\tools\apache-tomcat-8.5.32\conf\Catalina\localhost\ssmDemo.xml]
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine

[Catalina].StandardHost[localhost].StandardContext[/ssmDemo]]
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:758)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:629)
	at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1839)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

原因
解压的时候,项目叫book_ssm
项目导入eclipse的时候,名字是book_ssm2
发布到tomcat的时候,webapps下的名字是book_ssm2
而生成的${tomcat}/conf/Catalina/localhost下的xml文件叫ssmDemo.xml

解决过程
我们先来看看它里面的.project配置,项目名称如下
<projectDescription>
    <name>book_ssm2</name>
</projectDescription>
而pom.xml里面的项目名称如下
<build>
    <finalName>ssmDemo</finalName>
</build>
因此可以推断,tomcat发布的时候,读取了pom.xml里面的finalName当作列项目名
我们把它去掉<!-- <finalName>ssmDemo</finalName> -->,然后移除,重新添加,发布
发现${tomcat}/conf/Catalina/localhost下的xml文件还叫ssmDemo.xml
因此要clean一下tomcat,然后重新添加,发布
发现${tomcat}/conf/Catalina/localhost下的xml文件还叫ssmDemo.xml
因此可以判断,还是有其他地方叫ssmDemo的,
找了一下,pom.xml里的文件名称如下
<project ...>
  <name>ssmDemo</name>
</project>
因此可以推断,tomcat发布的时候,读取了pom.xml里面的name当作列项目名
而资源名称还是用.project配置的项目名book_ssm2
现在我们把pom.xml的项目名称改一下
<project ...>
  <name>book_ssm2</name>
</project>
发现${tomcat}/conf/Catalina/localhost下的xml文件还叫ssmDemo.xml
查找发现/book_ssm2/.settings/org.eclipse.wst.common.component
里面配置了项目名称
<project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="ssm">        
        <property name="context-root" value="/ssmDemo"/>
    </wb-module>
</project-modules>
应该是导入项目的时候生成的
这个项目名称对应的是右键项目->Properties->Web Project Settings的Context Root: /ssmDemo
把它改为book_ssm2
再试,终得正确的xml文件
${tomcat}/conf/Catalina/localhost/book_ssm2.xml

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

svygh123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值