Unable to locate Spring NamespaceHandler for XML schema namespace[http://www.springframework.org/schema/security]

使用maven构建spring security的一个demo时出现了这个问题,网上找了很长时间,很多答案都不适合自己。

1.一开始根据提示以为是xsd和jar包的版本冲突问题,参考了这篇文章 http://www.baeldung.com/unable-to-locate-spring-namespacehandler-for-xml-schema-namespace,

修改xsd和jar包版本一致,但是还是报同样的问题。

2.后来找到一些答案可能是META-INF文件中spring.schemas,spring.handlers的配置信息有问题,spring.schemas配置了xml文件中的命名空间引用的约束文件所在的路径,

当这个配置信息不存在或者错误时,就找不到约束文件了。参考了http://www.colabug.com/thread-1060640-1-1.html

3.继续查找spring.schemas的配置信息,发现spring bean 和spring security都带有这种spring.schemas配置,所以觉得可能是互相覆盖了的原因。

参考了http://www.bubuko.com/infodetail-924825.html

4.最后参考http://cloverprince.iteye.com/blog/1011382 文章,发现spring-security的这个spring.schemas并不在core和web里,而是在另外一个spring-security-config.jar

问题终于找到了,我没有配置spring-security-config.jar,于是在maven中添加了这个jar包,重启,解决问题。

spring-security的reference, 2.1节,提到: 

“To start using the security namespace in your application context, you first need to make sure that the spring-security-config jar is on your classpath. ... ”

posted @ 2015-12-11 11:41  重拾热情的小程序员  阅读(5043)  评论(1编辑  收藏  举报