現象:spring加載配置文件applicationContext.xml出錯,拋出nested exception is og.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 47; cvc-elt.1: 找不到元素 'beans' 的聲明r的異常信息。
造成該異常原因有兩種:
第一,配置文件頭部配置的xsd版本信息不正確,造成解析時出錯。spring頭部xsd或dtd校驗文件的查找分兩步,第一先從本地jar包中找,如果找到則用本地jar包的進行校驗(可以在spring-beans.jar或spring-context.jar里的META-INF下的spring-schemas文件中找到xsd文件位置的定義),如果沒有找到則進行第二步查找,它會嘗試從網絡中下載該文件然后校驗,如果系統斷網或下載不下來,則會拋出上述異常.
解決辦法 : 將applicationContext.xml中xsd文件定義的版本改為spring jar包中定義的xsd的版本,如果版本定義的太高在本地會無法找到,只能從網絡上下載。
例如我的spring jar包是3.0.5版本的,但是我的xsd寫的是3.2的,有時候如果系統斷網或下載不下來就會報這個問題,把3.2改成3.0就解決了。
第二,在dtd中缺少 xmlns="http://www.springframework.org/schema/beans"也會出現這個問題。
解決方法:在spring配置文件中加入xmlns="http://www.springframework.org/schema/beans即可解決。