Tomcat 7.0.12 报错 org.apache.catalina.deploy.WebXml addFilter

今天工作的时候从SVN新下载了一个项目,用的Tomcat 7.0.52 启动的,虽然项目能启动,但是有些页面报错:

java.io.FileNotFoundException: Could not resolve XML resource 
[null] with public ID [***] and base URI [null] to a known, local entity.

是因为 自从7.0.52版本后出于安全考虑将 xmlBlockExternal=”true”
官方解释:

As per discussion with Tomcat developers, xmlBlockExternal=”true” 
attribute of Tomcat’s Context (context.xml) was set true by default 
starting from 7.0.52. With xmlBlockExternal=”false” generated/djn-
settings.conf can be included` ontext  xmlBlockExternal="false">

可以将 Tomcat conf目录下的context.xml的 contex 节点上加上一个属性
xmlBlockExternal=”false”


然后我下载了一个低版本的 Tomcat 7.0.12 ,运行后又出现下面的错误,我将主要的信息截了出来:

2017-4-28 10:32:25 org.apache.tomcat.util.digester.Digester endElement
严重: End event threw exception
java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addFilter
    at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:802)
    at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:201)
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1057)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
.....
2017-4-28 10:32:25 org.apache.catalina.startup.ContextConfig parseWebXml
严重: Parse error in application web.xml file at jndi:/localhost/B-SDM/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:2713)
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1060)
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
......
2017-4-28 10:32:25 org.apache.catalina.startup.ContextConfig parseWebXml
严重: Occurred at line 21 column 11
2017-4-28 10:32:25 org.apache.catalina.startup.ContextConfig configureStart
严重: Marking this application unavailable due to previous error(s)

这个错的解决方法是在Tomcat的 conf目录下的context.xml配置文件中的 Context 节点上加入 配置.

<Loader delegate="true" /> 

关于< Loader delegate=”true” /> 节点:

设置为 true,表示tomcat将遵循JVM的delegate机制,即一个WebAppClassLoader在加载类文件时,会先递交给SharedClassLoader加载,SharedClassLoader无法加载成功,会继续向自己的父类委托,一直到BootstarpClassLoader,如果都没有加载成功,则最后由WebAppClassLoader自己进行加载。
设置成 false,表示将不遵循这个delegate机制,即WebAppClassLoader在加载类文件时,会优先自己尝试加载,如果加载失败,才会沿着继承链,依次委托父类加载。
关于类加载的机制,将在稍后的博客中总结.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于 Redis 服务器无法找到指定的配置文件 `/usr/local/src/redis-7.0.12/redids.conf` 导致的。错误消息中提到的路径可能存在一些拼写错误或者该文件确实不存在。 要解决这个问题,您可以尝试以下步骤: 1. 检查路径是否正确。请确保您提供的路径中没有任何拼写错误,并且确保文件名为 `redis.conf` 而不是 `redids.conf`。如果路径中包含版本号,请确保版本号与您实际安装的 Redis 版本匹配。 2. 确认配置文件是否位于指定的路径下。查看 `/usr/local/src/redis-7.0.12` 目录下是否存在名为 `redis.conf` 的文件。如果文件不存在,请检查您的 Redis 安装是否正确,并且确保配置文件已经正确地放置在指定的路径下。 3. 如果您已经确认配置文件的路径和名称正确无误,但仍然无法找到该文件,请尝试使用绝对路径来启动 Redis 服务器,例如:`redis-server /path/to/redis.conf`,其中 `/path/to/redis.conf` 是您实际的配置文件路径。 请注意,Redis 默认情况下将在工作目录中查找配置文件。因此,如果您在启动 Redis 服务器时没有指定配置文件路径,它将尝试在当前工作目录中查找 `redis.conf` 文件。您可以通过在启动命令中指定配置文件路径来避免此错误。 如果问题仍然存在,请提供更多关于您的 Redis 安装和配置的详细信息,以便我能够更好地帮助您解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值