cvc-elt.1: 找不到元素 'ehcache' 的声明

阅读更多
问题抛出:
Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 87; cvc-elt.1: 找不到元素 'ehcache' 的声明。



ehcache.xml配置:


    
    
 	
	
	




maven项目中,ehcache.xml引用目录结构如附件1.png
pom文件加入ehcache引用,

    net.sf.ehcache
	ehcache
	2.10.6



一切准备就绪,启动tomcat,无异常抛出。重启tomcat,抛出异常,反复操作几次,异常偶发性的出现,如下所示:

Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 87; cvc-elt.1: 找不到元素 'ehcache' 的声明。
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)


问题原因:spring容器在加载ehcache.xml文件时,会去加载命名空间的ehcache.xsd文件,即 xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd",这个文件加载不稳定,从而导致在解析ehcache.xml文件里的标签时无法识别。

解决方法:
将命名空间的ehcache.xsd文件下载下来放在项目本地中引用,如图附件2.png,ehcache.xsd文件可以放在maven项目的resources根目录底下,ehcache.xml文件命名空间的引用方式改成如下
xsi:noNamespaceSchemaLocation="classpath:ehcache.xsd"
  • cvc-elt.1: 找不到元素 'ehcache' 的声明_第1张图片
  • 大小: 6.9 KB
  • cvc-elt.1: 找不到元素 'ehcache' 的声明_第2张图片
  • 大小: 10.3 KB
  • 查看图片附件

你可能感兴趣的:(cvc-elt.1: 找不到元素 'ehcache' 的声明)