对于元素'上下文没有声明:component-scan'

时间:2012-07-11 20:27:03

标签: spring google-app-engine

我从Spring 3(3.1.2)和Google App Engine开始。

我已经在线跟踪了一个tutoria,现在,我已经开始使用我的bean-xml xml,这在开始时有问题。

这是代码

<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context/
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="my.example">

所有java文件的根包都是“my.example”。子包也是“模型”和“控制器”,也包含子包。 现在

当我启动应用程序时,我收到了这个错误:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 10 in XML document from ServletContext resource [/WEB-INF/spring-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'context:component-scan'.

有很多堆栈跟踪。

有谁知道我怎么能解决这个问题? 我检查了XSD,它们似乎是正确的。

3 个答案:

答案 0 :(得分:1)

您可能缺少spring-context.jar,即包含上下文模式定义的那个。

答案 1 :(得分:1)

我不知道这是否有帮助,但是在使用maven shade plugin创建单个.jar时,我的错误与您的错误非常相似,并且阴影插件消除了spring.handlers和来自spring.schemas的{​​{1}}。

这个SO答案指出了我正确的方向:https://stackoverflow.com/a/3650844/7008

使用AppendingTransformer将这些弹簧位添加回META-INF/文件夹的文档为我做了诀窍:http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer

答案 2 :(得分:1)

问题是与Spring-context依赖关系不兼容的架构位置。

替换

http://www.springframework.org/schema/context/spring-context.xsd

通过

http://www.springframework.org/schema/context/spring-context-2.5.xsd

应该这样做!我使用的是spring-context 3.1.1,并且我在引用http://www.springframework.org/schema/context/spring-context-2.1.xsd

时遇到了同样的错误

但是,您还应该执行maven树依赖关系并检查是否有不同的spring版本。这个错误也可能是由于这个事实......