Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring4REST应用程序使用Java配置(无xml)IllegalArgumentException_Java_Spring_Rest_Spring Mvc_Configuration - Fatal编程技术网

Spring4REST应用程序使用Java配置(无xml)IllegalArgumentException

Spring4REST应用程序使用Java配置(无xml)IllegalArgumentException,java,spring,rest,spring-mvc,configuration,Java,Spring,Rest,Spring Mvc,Configuration,这让我快发疯了。我已经完成了一些Spring编码,但这是我第一次尝试用Java进行所有配置。我搜索了stackoverflow和其他地方,虽然其他人看到了这个问题,但他们的解决方案对我都不起作用 以下是我的源文件: 初始值设定项: public class EnhancedCandidateInfoInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { private static final

这让我快发疯了。我已经完成了一些Spring编码,但这是我第一次尝试用Java进行所有配置。我搜索了stackoverflow和其他地方,虽然其他人看到了这个问题,但他们的解决方案对我都不起作用

以下是我的源文件:

初始值设定项:

public class EnhancedCandidateInfoInitializer extends  AbstractAnnotationConfigDispatcherServletInitializer {
    private static final Logger logger = LoggerFactory.getLogger(EnhancedCandidateInfoInitializer.class);

    @Override
    protected Class<?>[] getRootConfigClasses() {
        logger.info("@@@@@ getRootConfigClasses called - returning null @@@@@");
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        logger.info("@@@@@ getServletConfigClasses called returning EnhancedCandidateInfoWebConfiguration.class @@@@@");
        return new Class[] { EnhancedCandidateInfoWebConfiguration.class    };
    }

    @Override
    protected String[] getServletMappings() {
        logger.info("@@@@@ getServletMappings called @@@@@");
        return new String[] { "/" };
    }
}
控制器:

@RestController
public class EnhanceCandidateInfoController {
    @RequestMapping("/")
    public String welcome() {//Welcome page, non-rest
        return "Welcome to RestTemplate Example.";
    }

    @RequestMapping("/hello/{player}")
    public Message message(@PathVariable String player) {//REST Endpoint.

        Message msg = new Message(player, "Hello " + player);
        return msg;
    }
}
当我构建应用程序并将其部署到tomcat时,我会得到以下异常堆栈跟踪:

原因:java.lang.IllegalArgumentException:未能注册名为“dispatcher”的servlet。请检查是否有另一个servlet以相同的名称注册。 位于org.springframework.util.Assert.notNull(Assert.java:115) 位于org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.registerDispatcherServlet(AbstractDispatcherServletInitializer.java:98) 在org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup上(AbstractDispatcherServletInitializer.java:71) 在org.springframework.web.SpringServletContainerInitializer.onStartup上(SpringServletContainerInitializer.java:169) 位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5274) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)


正如我所说,我已经搜索了stackoverflow和其他地方,找到了其他有我相同问题的地方,但是当我尝试实施建议的修复时,我的问题仍然存在。提前感谢您的帮助。

将您的
webmvc配置方法更改为:

public class EnhancedCandidateInfoWebConfiguration extends WebMvcConfigurerAdapter {     

       @Override            
        public void configureViewResolvers(ViewResolverRegistry registry) {
            InternalResourceViewResolver ivr=new InternalResourceViewResolver();
            ivr.setPrefix("/WEB-INF/jsp/");
            ivr.setSuffix(".jsp");
            ivr.setExposeContextBeansAsAttributes(true);
            registry.viewResolver(ivr);
        }
    }
public class EnhancedCandidateInfoWebConfiguration extends WebMvcConfigurerAdapter {     

       @Override            
        public void configureViewResolvers(ViewResolverRegistry registry) {
            InternalResourceViewResolver ivr=new InternalResourceViewResolver();
            ivr.setPrefix("/WEB-INF/jsp/");
            ivr.setSuffix(".jsp");
            ivr.setExposeContextBeansAsAttributes(true);
            registry.viewResolver(ivr);
        }
    }