今天在项目中出现“Document root element "beans", must match DOCTYPE root "null”, 原来运行好好的代码,为什么这种问题呢? 根据提示,貌似是dtd或者schema的问题, 也确实是它的问题,但是分析过程却是这样的。
问题分析过程:
思考1、自己新加入了什么依赖呢? 加了如下的依赖:
- <dependency>
- <groupId>com.alibaba.external</groupId>
- <artifactId>sourceforge.spring.aop</artifactId>
- <version>2.0.7</version>
- </dependency>
是2.0版本以上的版本啊,这能有什么问题?
思考2:是不是spring配置文件的格式出现了问题呢?
拷贝了原来运行良好的文件头部进行替换,加上了“<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">”,但是问题依然没有解决。 替换的头部如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
或者
- <?xml version="1.0" encoding="UTF-8"?>
- <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"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
思考3:spring的依赖问题
在思考1中提到是使用的2.0.7版本,仔细查看依赖关系之后发现,该版本使用了sourceforge.spring的依赖。真是晕倒, 也不知道是同事在加入仓库的时候搞错了还是spring自身的依赖的时候版本搞错了。
分析好原因之后则做及时调试依赖
后来在spring forum上发现了正解:
You have the wrong xml configuration for the version of spring.
1.x use DOCTYPE
2.x use schema
You must have 1.x in the classpath.
引自http://forum.springframework.org/showthread.php?t=37883
spring 1.x 使用DOCTYPE,而2.x是用schema,
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/564861,如需转载请自行联系原作者