Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans'(转)
今天把在线聊天室代码改了下, 想启动应用测试. 结果抛出一大堆异常:
-------------------------------------------------------------------------------------------- org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 4 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'. 这就奇怪了.上午都还是好的. 突然说Spring配置文件不对. 根据异常说的: 就是'beans'没有定义. 这可能是命名空间有问题: ----------------------------------------------------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 这定义是MyEclipse自动生成的. 应该不会有错吧.没办法, 只有上百度了. 几个网友也有我类似的问题. 其中一网友答案很是经典: Spring官网出了问题, 命名空间文件不能找到, 当然出问题了. 他的解决办法就是: 等Spring官网好了再试. 我也觉得这很有道理, 也在QQ群里给几个合作伙伴发消息说由于Srping官网出了问题, 聊天室不能调试. 但是越想越觉得很不安. 那岂不是所有的用到Spring的应用程序都要依赖Spring官网了? 这太危险了, 万一哪天官网彻底出问题了(当然这种可能是很小的了), 那所有的程序不都完了? 再说了命名空间文件可以下载下来放在本地的, 为什么一定要联网用呢? 那万一那天没有联网, 岂不不能做启动应用了? 在百度里找了很久, 没有找到解决办法. 上下Google找, 还不错, 找到了, 有位网友解决了此问题, 貌似很简单: --------------------------------------------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> 为什么是这样, 网友说是版本问题, 我也不知道具体原因, 反正好了就好. |
造成以上的异常很常见,主要有两个方面:
第一,没有加入aop路径:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd //这里根据版本不一样,数字也不一样。
">
第二,可能缺少lib文件:
看你的lib中有没有导入:com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
如果确认了以上两点,那么就OK。'
---------------------------------------------------------------------
在启动Spring时,报以下错误,如图:
原因是在xml中spring的xsd的版本配置的不一致,我使用的是spring-2.5.6,但配置文件中配的是3.0。改成如下即可:
另外,配置时,要注意配置文件的编码;否则当编译时,输出的编码和你的配置文件的编码不一致时,会产生文件乱码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库