`

tomcat启动报错:org.apache.catalina.deploy.WebXml addFilter

阅读更多
SEVERE: End event threw exception
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:1063)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561)
    at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1809)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1247)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    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:632)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1229)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
    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:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
六月 12, 2014 7:22:06 下午 org.apache.catalina.startup.ContextConfig parseWebXml
SEVERE: Parse error in application web.xml file at jndi:/localhost/carManager/WEB-INF/web.xml
org.xml.sax.SAXParseException; systemId: jndi:/localhost/carManager/WEB-INF/web.xml; lineNumber: 33; columnNumber: 11; Error at (33, 11) : org.apache.catalina.deploy.WebXml addFilter
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2711)
    at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2743)
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1066)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:606)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1742)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2900)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
    at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561)
    at org.apache.catalina.startup.ContextConfig.parseWebXml(ContextConfig.java:1809)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1247)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    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:632)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1229)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
    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:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
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:1063)
    ... 30 more
六月 12, 2014 7:22:06 下午 org.apache.catalina.startup.ContextConfig parseWebXml
SEVERE: Occurred at line 33 column 11
六月 12, 2014 7:22:06 下午 org.apache.catalina.startup.ContextConfig configureStart
SEVERE: Marking this application unavailable due to previous error(s)
六月 12, 2014 7:22:06 下午 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error getConfigured
六月 12, 2014 7:22:06 下午 org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/carManager] startup failed due to previous errors

   解决办法:

    在tomacat的配置文件context.xml里加上<Loader delegate="true"/>

   <Loader delegate="true"/>此参数的作用:

首先,你需要了解一下JVM的Classloader机制(详细请自行google之)。
简而言之,JVM的classloader加载继承关系分为BootstarpClassLoader --> ExtClassLoader --> SystemClassLoader,应用的WebAppClassLoader继承自SystemClassLoader,在加载具体某个类时,一般会先委托给父类ClassLoader,当父类ClassLoader无法加载成功时,才会再由子类ClassLoader尝试加载,这就是所谓的delegate机制。

其次,Tomcat在jvm的ClassLoader机制上增加了几个继承层次。
SystemClassLoader --> CommonClassLoader -->(ServerClassLoader | SharedClassLoader --> WebAppClassLoader)。
CommonClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties中common.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/lib下的文件。该loader加载的类为tomcat服务器和tomcat下面的所有webApp所共享。
ServerClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties中server.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/server下的文件。该loader加载的类为tomcat服务器所独有核心类,tomcat下面的WebApp无法访问。
SharedClassLoader用来加载${CATALINA_HOME}/conf/catalina.properties中shared.loader配置目录下的类文件,一般是用来加载${CATALINA_HOME}/shared下的文件。该loader加载的类为tomcat下面的所有webApp所共享。
WebAppClassLoader用来加载${CATALINA_HOME}/webapps/目录下每个WebApp应用的/WEB-INF/class,/WEB-INF/lib的类文件,每个WebApp对应一个WebAppClassLoader,用来加载其所需要的类文件。

最后,说一下delegate配置的意义。
True,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。
False,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。

在此说一下配置为False需要注意的问题:一旦配置为False,如果你在WebApp中自己定义了一个java.lang.String,则这个String类会有可能覆盖掉jdk中的String类,这也许不是你想要的结果。另外对于多个WebApp公用jar包,你可能会放到${CATALINA_HOME}/shared目录中共享,但是一不小心在应用的/WEB-INF/lib中也包含了一个同名的但版本不一致的jar的话,这就有可能会导致很多奇怪的问题。

 

分享到:
评论

相关推荐

    org.apache.catalina.connector.ClientAbortException和TOMCAT的日志配置

    问题1:TOMCAT下载文件出错:org.apache.catalina.connector.ClientAbortException. 问题2:TOMCAT记录接收数据大小、发送数据大小和请求处理时间

    tomcat启动报错:java.util.zip.ZipException的解决方法

    org.apache.catalina.startup.ContextConfig.beforeStart Exception fixing docBase for context [/test] java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) ...

    java基础知识,基础知识

    3月 17, 2019 10:51:41 上午 org.apache.catalina.startup.VersionLoggerListener log 信息: Server version: Apache Tomcat/7.0.78 3月 17, 2019 10:51:41 上午 org.apache.catalina.startup.VersionLoggerListener...

    tomcat启动的问题--apr

    2010-8-11 18:24:13 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the ...

    org.apache.catalina.core.AprLifecycleListener

    org.apache.catalina.core.AprLifecycleListener myeclipse tomcat 無法啟動 用這個文件

    在线等待解决java tomcat 报错问题:java.lang.NoClassDefFoundError: javax/tools/StandardJavaF

    在处理这类问题时,首先应该定位问题来源,比如查看Tomcat的错误日志(如`catalina.out`或`localhost.log`),这通常能提供更多的报错信息。然后,根据错误信息找到相应的类或库,确认其是否存在于正确的位置。最后...

    apache-tomcat-9.0.56.tar.gz

    Apache Tomcat是一款开源的软件,它是Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个"apache-tomcat-9.0.56.tar.gz"文件是Tomcat的9.0.56版本的源码包,采用的是tar.gz格式,这是一种在...

    apache-tomcat-8.5.100.tar.gz

    - 查看logs目录下的日志文件,如catalina.out,以诊断运行时问题。 - 使用VisualVM、JConsole或JProfiler等工具进行性能分析和内存泄漏检测。 总之,Apache Tomcat 8.5.100作为一个强大的Java Web服务器,为...

    tomcat-juli.jar,tomcat-juli-adapters.jar,log4j-1.2.17.jar tomcat 8日志输出

    {"time":"2017-09-06 10:24:48,356","logtype":"INFO","loginfo":"org.apache.catalina.startup.HostConfig:Deploying web application directory C:\Users\admin\Desktop\Tomcat8\webapps\docs"} {"time":"2017-09-...

    apache-tomcat-8.5.78 源码 maven 版本

    apache-tomcat-8.5.78 源码 maven 版本,配置都已经搞定,开箱即用。是学习tomcat的不二之选。启动类 org.apache.catalina.startup.Bootstrap

    apache-tomcat-8.5.83.tar.gz

    Apache Tomcat 是一个开源软件,用Java语言编写,主要用于实现Java Servlet和JavaServer Pages(JSP)技术的应用服务器。在本例中,我们讨论的是Apache Tomcat 8.5.83版本的tar.gz压缩包。这个版本是针对Linux系统的...

    最新版linux apache-tomcat-8.5.58.tar.gz

    8. **日志和监控**:Tomcat的日志文件位于`logs`目录下,包括`catalina.out`、`host-manager.out`等,这些可以帮助你监控和调试Tomcat的运行状态。 9. **安全考虑**:为了生产环境的安全,需要配置防火墙规则,只...

    最新版linux apache-tomcat-9.0.46.tar.gz

    另外,可以通过调整`catalina.sh`或`catalina.bat`中的JVM参数来优化内存分配和垃圾回收,以适应你的特定需求。 9. **部署应用**:将`.war`文件复制到`$CATALINA_HOME/webapps`目录下,Tomcat会自动解压并启动应用...

    最新版linux apache-tomcat-9.0.37.tar.gz

    5. **启动、停止和管理**:Apache Tomcat提供了一系列的脚本用于管理服务,如`bin/startup.sh`用于启动Tomcat,`bin/shutdown.sh`用于关闭Tomcat。这些脚本需要使用`sudo`权限执行。 6. **配置**:Tomcat的配置文件...

    最新版linux apache-tomcat-9.0.50.tar.gz

    若需重新启动,可以先停止再启动,或者直接执行`./catalina.sh restart`。 8. **日志监控**:Tomcat的日志文件位于`$CATALINA_HOME/logs`目录下,这对于调试和排查问题非常有用。 9. **安全考虑**:在生产环境中,...

    tomcat服务器跨域需要的CorsFilter jar包文件

    1. **下载CorsFilter**:根据描述,你需要的文件是"tomcat跨域jar文包件",这个文件通常包含`org.apache.catalina.filters.CorsFilter`类,这是Tomcat自带的CORS过滤器实现。你可以从Apache Tomcat的官方网站或者第...

    apache-tomcat-8.5.64.tar.gz

    Apache Tomcat 是一款开源的Java Servlet容器,常用于部署Java Web应用程序。在Linux环境中,它作为Java Enterprise Edition(Java EE)的一部分,为开发者提供了一个轻量级的服务器平台。"apache-tomcat-8.5.64.tar...

    apache-tomcat-8.5.92.tar.gz

    Apache Tomcat 是一款广泛应用的开源软件,用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本文中,我们将深入探讨Apache Tomcat 8.5.92这一特定版本,了解其特点、功能以及如何进行安装和配置。 ...

Global site tag (gtag.js) - Google Analytics