- 背景: 最近项目用到了 spring mvc 和 dbcp数据源。因为以前都是用的struts2,所以没有昨天碰到的这个问题:启动spring的时候解析spring xml时候报错。
- 环境介绍: 首先maven dependences了spring + spring mvc(version:3.1.1.RELEASE),然后配置好之后启动发现报错,错误时说bean xml的解析有问题:具体错误如下
这个时候我的commons-dbcp用的是:Caused by: org.xml.sax.SAXParseException: cos-all-limited.1.2: An ''all'' model group must appear in a particle with '{'min occurs'}'='{'max occurs'}'=1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition. at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:267) at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:201) at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388) ... 49 more
<dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2</version> </dependency>
我发现是bean xml解析有问题,我进入commons-dbcp 1.2 的pom中看看,发现其中有个依赖:<dependency> <groupId>xerces</groupId> <artifactId>xerces</artifactId> <version>2.0.2</version> </dependency>
于是我在我自己的POM.xml中将dbcp的dependence改为了:<dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2</version> <exclusion> <groupId>xerces</groupId> <artifactId>xerces</artifactId> </exclusion> </dependency>
这样子就不报错了。这就是这个xml解析的jar包冲突(具体我没时间去看源代码),后来我去看了下dbcp1.3+的pom,发现只要用1.4的就ok,不会有冲突。<dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency>
- 当然,虽然问题表面解决,但是没仔细去看源代码,先记一笔,有时间去弄个究竟。
- 如果有人也碰到过类似问题,不防留言指点指点。
spring3.1.1与commons-dbcp1.2的冲突?
最新推荐文章于 2022-12-20 17:15:13 发布