我从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,它们似乎是正确的。
答案 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版本。这个错误也可能是由于这个事实......