title: Invalid mapping on handler class public java.lang.String com.emusicstore.controller.admin.AdminHome.adminPage()
body: <p>When I try to introduce Spring Security into my code, I get this error. Spring version is 4.3.18, spring security version is 3.2.7.</p>
  
  <p>The error is as follows:</p>
  
  <pre><code>Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Invalid mapping on handler class [com.emusicstore.controller.admin.AdminHome]: public java.lang.String com.emusicstore.controller.admin.AdminHome.adminPage()
  Jan 28, 2020 10:04:53 PM org.springframework.web.context.ContextLoader initWebApplicationContext
  SEVERE: Context initialization failed
  org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Invalid mapping on handler class [com.emusicstore.controller.admin.AdminHome]: public java.lang.String com.emusicstore.controller.admin.AdminHome.adminPage()
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1634)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
      at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
      at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
      at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
      at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
      at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5068)
      at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5584)enter code here
      at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
      at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
      at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
      at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
      at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1863)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
      at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
      at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
      at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
      at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
      at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
      at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
      at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466)
      at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
      at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
      at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399)
      at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:828)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
      at sun.rmi.transport.Transport$1.run(Transport.java:200)
      at sun.rmi.transport.Transport$1.run(Transport.java:197)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
      at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$254(TCPTransport.java:683)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$1/1110694198.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at java.lang.Thread.run(Thread.java:745)
  Caused by: java.lang.IllegalStateException: Invalid mapping on handler class [com.emusicstore.controller.admin.AdminHome]: public java.lang.String com.emusicstore.controller.admin.AdminHome.adminPage()
      at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$1.inspect(AbstractHandlerMethodMapping.java:239)
      at org.springframework.core.MethodIntrospector$1.doWith(MethodIntrospector.java:72)
      at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:530)
      at org.springframework.core.MethodIntrospector.selectMethods(MethodIntrospector.java:68)
      at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:230)
      at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:214)
      at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:184)
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:127)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1692)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630)
      ... 58 more
  Caused by: java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.path()[Ljava/lang/String;
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.createRequestMappingInfo(RequestMappingHandlerMapping.java:251)
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.createRequestMappingInfo(RequestMappingHandlerMapping.java:208)
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getMappingForMethod(RequestMappingHandlerMapping.java:187)
      at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.getMappingForMethod(RequestMappingHandlerMapping.java:55)
      at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$1.inspect(AbstractHandlerMethodMapping.java:235)
      ... 67 more
  
  Jan 28, 2020 10:04:53 PM org.apache.catalina.core.StandardContext startInternal
  SEVERE: One or more listeners failed to start. Full details will be found in the appropriate container log file
  Jan 28, 2020 10:04:53 PM org.apache.catalina.core.StandardContext startInternal
  SEVERE: Context [/eMusicStore] startup failed due to previous errors
  Jan 28, 2020 10:04:53 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
  SEVERE: The web application [/eMusicStore] registered the JDBC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
  Jan 28, 2020 10:04:53 PM org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalMapForLeaks
  SEVERE: The web application [/eMusicStore] created a ThreadLocal with key of type [com.microsoft.sqlserver.jdbc.ActivityCorrelator$1] (value [com.microsoft.sqlserver.jdbc.ActivityCorrelator$1@9ba4aa]) and a value of type [com.microsoft.sqlserver.jdbc.ActivityId] (value [dc8d1aa0-2727-41a2-8fb7-7f44aa2d6a7a-2]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
  [2020-01-28 10:04:53,894] Artifact eMusicStore:war exploded: Error during artifact deployment. See server log for details.
  C:\apache-tomcat-7.0.69\bin\catalina.bat stop
  Using CATALINA_BASE:   "C:\Users\Rishav\.IntelliJIdea2017.2\system\tomcat\Unnamed_eMusicStore"
  Using CATALINA_HOME:   "C:\apache-tomcat-7.0.69"
  Using CATALINA_TMPDIR: "C:\apache-tomcat-7.0.69\temp"
  Using JRE_HOME:        "C:\Program Files\Java\jdk1.8.0_45"
  Using CLASSPATH:       "C:\apache-tomcat-7.0.69\bin\bootstrap.jar;C:\apache-tomcat-7.0.69\bin\tomcat-juli.jar"
  Jan 28, 2020 10:05:37 PM org.apache.catalina.core.StandardServer await
  INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance.
  Jan 28, 2020 10:05:37 PM org.apache.coyote.AbstractProtocol pause
  INFO: Pausing ProtocolHandler ["http-apr-8080"]
  Jan 28, 2020 10:05:37 PM org.apache.coyote.AbstractProtocol pause
  INFO: Pausing ProtocolHandler ["ajp-apr-8009"]
  Jan 28, 2020 10:05:37 PM org.apache.catalina.core.StandardService stopInternal
  INFO: Stopping service Catalina
  Jan 28, 2020 10:05:37 PM org.apache.coyote.AbstractProtocol stop
  INFO: Stopping ProtocolHandler ["http-apr-8080"]
  Jan 28, 2020 10:05:37 PM org.apache.coyote.AbstractProtocol stop
  INFO: Stopping ProtocolHandler ["ajp-apr-8009"]
  Jan 28, 2020 10:05:37 PM org.apache.coyote.AbstractProtocol destroy
  INFO: Destroying ProtocolHandler ["http-apr-8080"]
  Jan 28, 2020 10:05:37 PM org.apache.coyote.AbstractProtocol destroy
  INFO: Destroying ProtocolHandler ["ajp-apr-8009"]
  
  The controllers are as follows :
  Home Controller
  package com.emusicstore.controller;
  
  import org.springframework.stereotype.Controller;
  import org.springframework.ui.Model;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestParam;
  
  @Controller
  public class HomeController {
  
      @RequestMapping("/")
      public String home(){
          return "home";
      }
  
      @RequestMapping("/login")
      public String login(@RequestParam(value = "error",required = false)String error,@RequestParam(value = "logout",
      required = false)String logout,Model model){
          if(error!=null){
              model.addAttribute("error","Invalid username and password");
          }
  
          if(logout!=null){
              model.addAttribute("msg","You have logged out successfully");
          }
  
          return "login";
      }
  }
  
  AdminHome
  package com.emusicstore.controller.admin;
  
  import com.emusicstore.model.Product;
  import com.emusicstore.service.ProductService;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Controller;
  import org.springframework.ui.Model;
  import org.springframework.web.bind.annotation.RequestMapping;
  
  import java.util.List;
  
  @Controller
  @RequestMapping("/admin")
  public class AdminHome {
  
      @Autowired
      private ProductService productService;
  
      @RequestMapping
      public String adminPage(){
  
          return "admin";
      }
  
      @RequestMapping("/productInventory")
      public String productInventory(Model model){
          List&lt;Product&gt; products=productService.getProductList();
          model.addAttribute("products",products);
  
          return "productInventory";
      }
  
  //    @RequestMapping("/customer")
  //    public String customerManagement(Model model){
  //        return "customerManagement";
  //    }
  }
  
  admin.jsp
  &lt;%@include file="/WEB-INF/views/template/header.jsp"%&gt;
  
  
  &lt;div class="container-wrapper"&gt;
      &lt;div class="container"&gt;
          &lt;div class="page-header"&gt;
              &lt;h1&gt;Administrator page&lt;/h1&gt;
  
              &lt;p class="lead"&gt;This is the administrator page!&lt;/p&gt;
          &lt;/div&gt;
  
          &lt;c:if test="${pageContext.request.userPrincipal.name != null}"&gt;
          &lt;h2&gt;
              Welcome: ${pageContext.request.userPrincipal.name} | &lt;a href="&lt;c:url
                  value="/j_spring_security_logout" /&gt;"&gt;Logout&lt;/a&gt;
          &lt;/h2&gt;
          &lt;/c:if&gt;
  
          &lt;h3&gt;
              &lt;a href="&lt;c:url value="/admin/productInventory" /&gt;" &gt;Product Inventory&lt;/a&gt;
          &lt;/h3&gt;
  
          &lt;p&gt;Here you can view, check and modify the product inventory!&lt;/p&gt;
  
  
  &lt;%@include file="/WEB-INF/views/template/footer.jsp" %&gt;
  </code></pre>
  
  <p>I don't seem to understand what the issue is. Before adding Spring Security, it seems to work fine but that could be unrelated. Please help me figure out how to resolve this.</p>