tomcat部署项目时出错(Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardC)

构建了一个maven项目,tomcat发布的时候报错:

SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sshe]]
	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:633)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
	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:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name struts2
	at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:3018)
	at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2983)
	at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1271)
	at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1353)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
	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:5179)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 11 more
三月 04, 2013 11:38:06 下午 org.apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory D:\Project\tomcat\tomcat-7.0.35\webapps\sshe
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/sshe]]
	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:633)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
	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:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

最后找到原因,原来是web.xml文件配置错误:

<!-- 错误配置 filter-name:strust2 同filter-mapping中的filter-name不符 -->
	<filter>
		<filter-name>strust2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>
	
	<!-- 正确配置 -->
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>*.action</url-pattern>
	</filter-mapping>


错误通常是Tomcat服务器在启动过程中遇到的问题,表明无法启动指定的`StandardEngine`、`StandardHost`或`StandardContext`组件。这可能是由于多种原因导致的,以下是一些常见的原因和解决方法: 1. **配置文件错误**:检查`web.xml`文件是否有语法错误,确保所有的标签都正确闭合,没有缺失或多余的属性。 2. **依赖冲突**:检查是否有依赖库冲突,例如不同版本的同一个库在`WEB-INF/lib`目录中同存在。解决方法是移除冲突的库或统一库的版本。 3. **类加载器问题**:Tomcat使用`Common ClassLoader`、`Standard ClassLoader`和`Single ClassLoader`三种类加载器,错误的配置可能导致类加载问题。检查`context.xml`或`server.xml`中的类加载器配置是否正确。 4. **JDK版本不兼容**:应用可能使用了某些在特定JDK版本中不可用的特性。确保Tomcat和应用使用的JDK版本兼容。 5. **资源锁定或权限问题**:确保Tomcat有权访问所有的应用资源,包括日志文件、临目录等。 6. **内存不足**:Tomcat可能因为系统可用内存不足而无法启动。可以通过增加JVM堆内存来尝试解决问题,例如在`setenv.sh`或`setenv.bat`文件中设置`JAVA_OPTS`。 解决此类问题通常需要查看Tomcat的日志文件,如`catalina.out`,`localhost.log`等,这些文件通常包含了详细的错误信息和堆栈跟踪,能够提供更具体的错误原因。根据具体的错误信息来定位问题并采取相应的解决措施。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值