Tomacat7启动报错-org.apache.catalina.deploy.WebXml addFilter

本文记录了 Tomcat7 在启动过程中遇到的 java.lang.NoSuchMethodException 异常,并提供了在 context.xml 文件中添加 <Loader delegate=true/> 的解决办法。

Tomacat7启动报错如下:

java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
 at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:855)
 at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
 at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1051)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
 at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537)
 at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1825)
 at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1201)
 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
 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:5161)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
2012-11-15 12:31:37 org.apache.catalina.startup.ContextConfig parseWebXml
严重: Parse error in application web.xml file at jndi:/localhost/ssy/WEB-INF/web.xml
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
 at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2687)
 at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2719)
 at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1054)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
 at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1537)
 at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1825)
 at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1201)
 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)
 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:5161)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
 at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:855)
 at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
 at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1051)
 ... 26 more 

 

解决方法为:在Tomacat7的context.xml文件里的<Context>中加上<Loader delegate="true" />

<think>好的,我现在要解决用户提到的Tomcat找不到catalina.jar的问题。首先,我需要回忆一下Tomcat的基本结构。Tomcat的lib目录下应该包含一些核心的JAR文件,比如catalina.jar、servlet-api.jar等等。如果启动时提示找不到catalina.jar,首先想到的是这个JAR文件是否存在于正确的位置。 根据用户提供的引用内容,特别是引用[2],里面提到当Tomcat找不到驱动类时,解决办法是将驱动JAR包放到web容器的lib目录下。类似的思路是否适用于catalina.jar的问题呢?不过catalina.jar本身是Tomcat的核心库,通常应该在Tomcat安装目录的lib文件夹里。所以可能的问题出在Tomcat的安装是否完整,或者环境变量设置是否有误。 接下来,我需要考虑用户可能遇到的情况。可能用户在安装Tomcat时,某些文件缺失或者被误删。例如,用户可能下载了一个不完整的Tomcat包,或者在清理文件时不小心删除了catalina.jar。这种情况下,重新下载或安装Tomcat可能会解决问题。 另外,引用[1]中提到,可以通过修改setenv.sh来添加JAR到Tomcat的类路径。虽然catalina.jar通常是Tomcat自带的,但有时候如果类路径配置错误,也可能导致Tomcat无法找到自己的库。用户可能需要检查CATALINA_HOME环境变量是否正确设置,指向正确的Tomcat安装目录。如果这个变量设置错误,Tomcat可能无法正确加载lib目录下的JAR文件。 然后,引用[3]提到Tomcat状态显示运行但无法停止,并且启动时没有日志。这可能与类路径问题有关,比如缺少关键JAR导致Tomcat无法正常启动或关闭。在这种情况下,检查catalina.out日志是否有错误信息可能会有帮助,但用户提到无法找到启动日志,这可能需要进一步检查日志配置或文件权限。 引用[4]中的FileNotFoundException指出类路径资源未找到,这可能与Spring Boot应用相关,但同样,类路径配置错误可能导致Tomcat自身无法找到必要的JAR文件。这时候需要确认Tomcat的类路径是否包含其lib目录。 总结可能的解决步骤: 1. 确认Tomcat的lib目录下确实存在catalina.jar。如果不存在,重新安装Tomcat或者从其他来源获取该文件。 2. 检查CATALINA_HOME环境变量是否正确设置,确保指向正确的Tomcat安装路径。 3. 检查启动脚本(如setenv.sh或catalina.sh)中是否有错误的类路径设置,导致覆盖了默认的类路径。 4. 检查文件权限,确保Tomcat有权限访问lib目录及其中的JAR文件。 5. 查看日志文件(如catalina.out),确认是否有其他相关错误信息,帮助诊断问题。 此外,用户可能需要确保没有其他配置或脚本干扰Tomcat的正常启动,比如自定义的类路径设置或第三方库冲突。如果有其他应用或服务占用端口或资源,也可能导致Tomcat启动异常,但这种情况可能不会直接导致找不到catalina.jar的问题。 最后,建议用户按照步骤逐步排查,从验证文件存在性到检查环境变量和配置,确保每一步都正确无误。如果所有步骤都正确,可能需要考虑更深层次的问题,如Java版本兼容性或系统权限设置。</think>### 解决Tomcat找不到catalina.jar的方法 #### 1. 检查文件是否存在 - **步骤**:确认Tomcat安装目录的`lib`文件夹下是否包含`catalina.jar`。默认路径为:`$CATALINA_HOME/lib/catalina.jar`。 - **解决方法**:若文件缺失,重新下载Tomcat并覆盖安装,或从其他正常实例中复制该文件[^2]。 #### 2. 验证环境变量 - **步骤**:检查`CATALINA_HOME`和`CATALINA_BASE`是否配置正确。 ```bash echo $CATALINA_HOME # 应输出Tomcat安装路径,例如:/opt/tomcat ``` - **解决方法**:若变量未设置或错误,在`~/.bashrc`或启动脚本中添加: ```bash export CATALINA_HOME=/path/to/tomcat export PATH=$CATALINA_HOME/bin:$PATH ``` #### 3. 检查类路径配置 - **步骤**:Tomcat启动脚本(如`catalina.sh`或`setenv.sh`)中可能覆盖了默认类路径。检查是否包含以下内容: ```bash CLASSPATH=$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar ``` - **解决方法**:若脚本被修改,恢复默认配置或移除冲突的类路径设置[^1]。 #### 4. 查看日志定位问题 - **步骤**:检查`$CATALINA_HOME/logs/catalina.out`中的错误详情。 ```bash tail -f $CATALINA_HOME/logs/catalina.out ``` - **解决方法**:若日志显示权限问题,执行: ```bash chmod +r $CATALINA_HOME/lib/*.jar # 确保JAR文件可读 ``` #### 5. 清理临时文件 - **步骤**:删除`work`、`temp`目录缓存: ```bash rm -rf $CATALINA_HOME/work/* rm -rf $CATALINA_HOME/temp/* ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值