在使用ehcache的时候碰到一个问题:
class="java">is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ehc
ache'
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'ehcache'
分析下来就是 ehcache.xml文件加载出问题了,根据
错误可以看出是"ehcache"节点无法
解析,那么首先就可以想到是描述文件出错ehcache.xsd;
为什么加载不到呢在本地直接
curl -X GET http://ehcache.org/ehcache.xsd
发现确实是链接不到服务器,发现是内网机器无法访问网络;
定位到问题首先想到的就是,那把ehcache.xsd下载到本地直接读,思路是正确的,只是文件路径的设置需要注意一下
比如:
如果,ehcache.xsd 和 ehcache.xml文件同目录下面
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="false" dynamicConfig="false">
这样配置是错误的,加载不了的;
那么要如何配置
xsi:noNamespaceSchemaLocation=""
?
看了一下源代码
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(InputSource inputSource, Resource resource)
Resource:我首先想到的就是:classpath:META-INF/spring/ehcache.xsd
没有仔细看,直接改上去:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="classpath:META-INF/spring/ehcache.xsd"
updateCheck="false" dynamicConfig="false">
OK 跑通过了,就是这样对的,没错,好了,以后类是的问题都可以这样处理
网友 2014/12/4 16:18:38 发表
我遇到你这个问题,一直解决不了