spring - java.lang.NoSuchMethodError: org.springframework.web.context.request.ServletRequestAttributes.<init> -


after migrating spring 3 spring 4, following error when request page:

java.lang.nosuchmethoderror: org.springframework.web.context.request.servletrequestattributes.<init>(ljavax/servlet/http/httpservletrequest;ljavax/servlet/http/httpservletresponse;)v 

i double checked , method not seem exist in spring 4. wonder if messed xsd versions in web.xml or dispatcher-servlet.xml

here web.xml:

<?xml version="1.0" encoding="utf-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"      xmlns="http://java.sun.com/xml/ns/javaee"     xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"     id="webapp_id" version="3.0">     <display-name>archetype created web application</display-name>    <servlet>     <servlet-name>dispatcher</servlet-name>     <servlet-class>       org.springframework.web.servlet.dispatcherservlet     </servlet-class>     <load-on-startup>1</load-on-startup>   </servlet>    <servlet-mapping>     <servlet-name>dispatcher</servlet-name>     <url-pattern>/</url-pattern>   </servlet-mapping>    <context-param>     <param-name>contextconfiglocation</param-name>     <param-value>/web-inf/dispatcher-servlet.xml</param-value>   </context-param>    <listener>     <listener-class>       org.springframework.web.context.contextloaderlistener     </listener-class>   </listener> </web-app> 

dispatcher-servlet.xml:

<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"  xmlns:mvc="http://www.springframework.org/schema/mvc"  xmlns:security="http://www.springframework.org/schema/security"  xsi:schemalocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-4.1.xsd  http://www.springframework.org/schema/security  http://www.springframework.org/schema/security/spring-security-4.0.xsd  http://www.springframework.org/schema/mvc  http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd  http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.1.xsd">        <context:component-scan base-package="org.javacms.controllers" />    <mvc:resources mapping="/templates/**" location="/templates/" />    <!--  added avoid exceptions -->   <bean class="org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter" />   <bean class="org.springframework.web.servlet.mvc.annotation.defaultannotationhandlermapping" />    <!-- jstl view resolver -->     <bean class="org.springframework.web.servlet.view.internalresourceviewresolver">         <property name="prefix">             <value>/templates/</value>         </property>         <property name="suffix">             <value>.jsp</value>         </property>     </bean> </beans> 

and pom.xml:

<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"   xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">   <modelversion>4.0.0</modelversion>   <groupid>javacms</groupid>   <artifactid>javacms</artifactid>   <packaging>war</packaging>   <version>0.0.1-snapshot</version>   <name>javacms maven webapp</name>   <url>http://maven.apache.org</url>    <properties>     <spring.version>4.1.7.release</spring.version>     <spring-security.version>4.0.1.release</spring-security.version>   </properties>   <dependencies>      <dependency>           <groupid>junit</groupid>           <artifactid>junit</artifactid>           <version>4.12</version>         </dependency>      <!-- spring -->     <dependency>       <groupid>org.springframework</groupid>       <artifactid>spring-core</artifactid>       <version>${spring.version}</version>     </dependency>      <dependency>       <groupid>org.springframework</groupid>       <artifactid>spring-web</artifactid>       <version>${spring.version}</version>     </dependency>      <dependency>       <groupid>org.springframework</groupid>       <artifactid>spring-webmvc</artifactid>       <version>${spring.version}</version>     </dependency>          <dependency>           <groupid>org.springframework</groupid>           <artifactid>spring-context</artifactid>           <version>${spring.version}</version>         </dependency>        <dependency>           <groupid>org.springframework</groupid>           <artifactid>spring-beans</artifactid>           <version>${spring.version}</version>         </dependency>      <dependency>       <groupid>javax.servlet</groupid>       <artifactid>jstl</artifactid>       <version>1.2</version>     </dependency>       <!-- spring security -->         <dependency>           <groupid>org.springframework.security</groupid>           <artifactid>spring-security-core</artifactid>           <version>${spring-security.version}</version>         </dependency>       <dependency>       <groupid>org.springframework.security</groupid>       <artifactid>spring-security-taglibs</artifactid>       <version>${spring-security.version}</version>     </dependency>        <dependency>       <groupid>org.springframework.security</groupid>         <artifactid>spring-security-config</artifactid>       <version>${spring-security.version}</version>     </dependency>           <!-- mysql connector -->          <dependency>           <groupid>mysql</groupid>           <artifactid>mysql-connector-java</artifactid>           <version>5.1.36</version>         </dependency>          <!-- hibernate -->          <dependency>           <groupid>org.hibernate</groupid>           <artifactid>hibernate-core</artifactid>           <version>4.3.10.final</version>         </dependency>   </dependencies>    <build>     <finalname>webapp</finalname>   </build> </project> 

am missing dependency or have wrong versions?

this error java.lang.nosuchmethoderror: org.springframework.web.context.request.servletrequestattributes.<init>(ljavax/servlet/http/httpservletrequest;ljavax/servlet/http/httpservletresponse;)v means using latest version of spring , trying invoke older version servletrequestattributes spring 3.

have in javadoc:
spring 3 - servletrequestattributes
spring 4 - servletrequestattributes

my guess spring 4 uses older version of jar contains servletrequestattributes. check libraries , see if there conflict.

try add pom.xml:

  <build>     <finalname>webapp</finalname>         <plugins>     <plugin>         <artifactid>maven-compiler-plugin</artifactid>         <version>3.1</version>         <configuration>              <source>1.7</source>               <target>1.7</target>          </configuration>     </plugin>     </plugins>   </build> 

Comments