Meh*_*ari 5 spring-mvc spring-security
spring mvc 中这个错误的主要原因是什么。我在我的项目中使用 spring mvc 4.1.4。:
nested exception is java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.name()Ljava/lang/String;
Run Code Online (Sandbox Code Playgroud)
如果你去这里:
然后选择“Spring Framework”,然后查看v3和v4的API,您可以看到注释:
org.springframework.web.bind.annotation.RequestMapping
在 v4 中有一个属性“name”,但在 v3 中没有。
如果您随后查看已部署应用程序的 WEB-INF/lib 文件夹,您很可能会看到两个不同版本的 spring-web 工件,一种用于 v3,一种用于 v4,并且运行时的类加载器正在从 v3 加载类定义而不是您针对 (v4) 构建的那个。
最简单的解决方案是更新 POM 以使用 Spring 4 中引入的新“物料清单”功能。
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-maven-bom
使用 Maven 时可能会意外混合不同版本的 Spring JAR。例如,您可能会发现第三方库或另一个 Spring 项目引入了对旧版本的传递依赖......为了克服此类问题,Maven 支持“物料清单”(BOM) 依赖项的概念。您可以在 dependencyManagement 部分导入 spring-framework-bom,以确保所有 spring 依赖项(直接依赖项和传递依赖项)都处于同一版本。
否则,您将需要确定引用 v3 JAR 的位置,并添加排除项以防止其被拉入。例如,在 Eclipse 中,您可以通过打开 POM、转到“dependency-hierachy”选项卡并键入spring-web 进入过滤器以找出罪魁祸首。然后,您可以向 POM 添加排除项,如下所示:
http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependency.html
不过,新的 BoM 功能可能更容易使用。
| 归档时间: |
|
| 查看次数: |
5265 次 |
| 最近记录: |