今天在修改Controller的類(lèi)名之后出現(xiàn)了個(gè)令我十分費(fèi)解的有關(guān)tomcat問(wèn)題柠偶。
出現(xiàn)問(wèn)題的過(guò)程:我先是在我的分支上修改了NoviceLoginController的名字,改為了NoviceLoginRewardController之后,提交了代碼灾部,并且合到了測(cè)試環(huán)境,ps aux |grep xxx找到該api的進(jìn)程號(hào),kill掉之后startup? tomcat然后就開(kāi)始無(wú)限的彈出這個(gè)錯(cuò)誤了。我懷疑是tomcat的啟動(dòng)時(shí)太抓,代碼中同時(shí)存在改名前和改名后兩個(gè)文件,從而導(dǎo)致出現(xiàn)了兩個(gè)相同的@RequestMapping地址令杈。但是不知道為什么會(huì)出現(xiàn)這種情況走敌。
問(wèn)題詳情如下:
2018-03-12-10:53:37,160 -- ERROR [http-bio-7731-exec-1] {org.springframework.web.servlet.DispatcherServlet:502} - 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: Ambiguous mapping. Cannot map 'noviceLoginRewardController' method
public com.wb.api.common.HttpRespBase com.wb.home.controller.NoviceLoginRewardController.getRewardsListInfo(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
to {[/v3/home/getNovicePopWindowInfo],methods=[POST]}: There is already 'noviceLoginController' bean method
public com.wb.api.common.HttpRespBase com.wb.home.controller.NoviceLoginController.getRewardsListInfo(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) mapped.
:
? ? ? ? at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
? ? ? ? at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
? ? ? ? at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
? ? ? ? at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
? ? ? ? at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
? ? ? ? at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
? ? ? ? at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
? ? ? ? at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
? ? ? ? at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
? ? ? ? at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
? ? ? ? at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
? ? ? ? at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
? ? ? ? at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
? ? ? ? at javax.servlet.GenericServlet.init(GenericServlet.java:158)
? ? ? ? at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1269)
? ? ? ? at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1182)
? ? ? ? at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1072)
? ? ? ? at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5368)
? ? ? ? at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5660)
? ? ? ? at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
? ? ? ? at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571)
? ? ? ? at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561)
? ? ? ? at java.util.concurrent.FutureTask.run(FutureTask.java:266)
? ? ? ? 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: Ambiguous mapping. Cannot map 'noviceLoginRewardController' method
public com.wb.api.common.HttpRespBase com.wb.home.controller.NoviceLoginRewardController.getRewardsListInfo(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
to {[/v3/home/getNovicePopWindowInfo],methods=[POST]}: There is already 'noviceLoginController' bean method
public com.wb.api.common.HttpRespBase com.wb.home.controller.NoviceLoginController.getRewardsListInfo(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) mapped.
? ? ? ? at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:560)
? ? ? ? at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:524)
? ? ? ? at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:250)
? ? ? ? at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:226)
? ? ? ? at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:191)
? ? ? ? at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:161)
? ? ? ? at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:125)
? ? ? ? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
? ? ? ? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
? ? ? ? ... 28 more