Spring v3没有为元素’mvc:resources’找到声明

目前正在运行

Tomcat:v6

Spring Tools Suite:v2.7.2

Spring框架:spring-webmvc-3.0.5

Servlet XML

      

web.xml部分代码

  duckapp /  

Servlet目的

web.xml将所有URL映射到servlet,但mvc:resources映射静态文件除外。

错误

  • cvc-complex-type.2.4.c:匹配的通配符是strict,但是没有找到元素’mvc:annotation-driven’的声明。 app-servlet.xml / app / www / WEB-INF

  • cvc-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素’mvc:resources’的声明。 app-servlet.xml / app / www / WEB-INF

已知的问题

  • http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd不包含元素资源

  • 如果被http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd取代仍然无效,可能无法正常工作根据spring 3.05的jar文件

  • mvc:资源出现在spring v3.0.4中,但没有新的xsd

如何修复编译错误以使mvc:资源正常工作?

我一直在挖掘大约2个小时,还没有可靠的答案……

在您的spring上下文中,xml mvc命名空间url应该与schemaLocation中的url匹配。 像这样的东西:

   

这是标准的XML命名空间声明。 命名空间url是一个唯一的id,然后映射到xsi:schemaLocation中的实际架构位置。

当使用Spring命名空间URL时,我通常不使用版本信息,并且大部分时间都可以正常工作。 您可能想尝试命名空间URL

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

代替

 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 

我得到了同样的错误。 原因是缺少Maven依赖性spring -webmvc。 我包括下面的依赖项,它开始工作。

   org.springframework spring-webmvc ${spring.version}  

我认为你的schemaLocation映射是不正确的。 命名空间指定为:

 xmlns:mvc="http://www.springframework.org/schema/mvc" 

这是正确的,我相信,但在schemaLocation你有

 http://www.springframework.org/schema/mvc/spring-mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 

因此,如果您将schemaLocation映射的第一行更改为您的mvc名称空间,它应该可以正常工作。

我已经为udemy加入了春季课程。 我按照我的导师告诉我要做的每一步。 因此,如果你使用spring mvc和hibernate,你可能会遇到这个错误无法读取模式文档’ http://www.springframework.org/schema/tx/spring-tx.xsd ‘等:

  and  elements 

在我的弹簧配置文件中,我有这两个url

  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 

在xsi:schemaLocation中,我替换为

  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd 

实际上我访问了这两个网站http://www.springframework.org/schema/mvc/和http://www.springframework.org/schema/tx/并且刚刚添加了最新版本的spring-mvc和spring-tx ie ,spring-mvc-4.2.xsd和spring-tx-4.2.xsd

所以,在我看来,明确指定版本是一个很好的做法。 它对我有用,希望这也适合你。 谢谢。