java.lang.IllegalArgumentException:无法注册名称为'dispatcher'的servlet.检查是否有另一个以相同名称注册的servlet. [英] java.lang.IllegalArgumentException: Failed to register servlet with name 'dispatcher'.Check if there is another servlet registered under the same name

查看:144
本文介绍了java.lang.IllegalArgumentException:无法注册名称为'dispatcher'的servlet.检查是否有另一个以相同名称注册的servlet.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的初始值班课程

public class HomeServlet extends 
AbstractAnnotationConfigDispatcherServletInitializer{

@Override
protected Class<?>[] getRootConfigClasses() {

    return null;
}

@Override
protected Class<?>[] getServletConfigClasses() {

    return new Class<?>[]{SpringContextConfig1.class};
}

@Override
protected String[] getServletMappings() {

    return new String[] {"/home"};
}

}

配置类

@ComponentScan(basePackages={"spittr.controllers"})
@Configuration
@EnableWebMvc
public class SpringContextConfig1 extends WebMvcConfigurerAdapter{

@Bean
public ViewResolver getViewResolver(){
    InternalResourceViewResolver ivr=new InternalResourceViewResolver();
    ivr.setPrefix("/WEB-INF/jsp/");
    ivr.setSuffix(".jsp");
    ivr.setExposeContextBeansAsAttributes(true);
    return ivr;
}

}

控制器

@Controller
public class HomeController {


@RequestMapping(value="/home",method=RequestMethod.GET)
public String home(){
    return "home";
}

}

这是一个非常简单的程序,我编写了该程序以测试Spring MVC的JavaConfig.我完全按照"Spring in Action"一书中的所有步骤进行操作.

This is a very simple program, I wrote to test the JavaConfig of Spring MVC.I exactly followed all the steps from "Spring in Action" book.

运行此代码时,出现此错误

When I run this code, I'm getting this error

09:41:37,854错误[org.jboss.msc.service.fail](ServerService线程池-72)MSC000001:无法启动服务jboss.undertow.deployment.default-server.default-host./spittr :服务jboss.undertow.deployment.default-server.default-host./spittr中的org.jboss.msc.service.StartException:java.lang.RuntimeException:java.lang.IllegalArgumentException:无法注册名称为'dispatcher'的servlet检查是否有另一个以相同名称注册的servlet. 在org.wildfly.extension.undertow.deployment.UndertowDeploymentService $ 1.run(UndertowDeploymentService.java:85) 在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745) 在org.jboss.threads.JBossThread.run(JBossThread.java:320) 原因:java.lang.RuntimeException:java.lang.IllegalArgumentException:无法注册名称为'dispatcher'的servlet.请检查是否有另一个servlet使用相同的名称注册. 在io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:236) 在org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100) 在org.wildfly.extension.undertow.deployment.UndertowDeploymentService $ 1.run(UndertowDeploymentService.java:82) ...另外6个 引起原因: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) 在io.undertow.servlet.core.DeploymentManagerImpl $ 1.call(DeploymentManagerImpl.java:186) 在io.undertow.servlet.core.DeploymentManagerImpl $ 1.call(DeploymentManagerImpl.java:171) 在io.undertow.servlet.core.ServletRequestContextThreadSetupAction $ 1.call(ServletRequestContextThreadSetupAction.java:42) 在io.undertow.servlet.core.ContextClassLoaderSetupAction $ 1.call(ContextClassLoaderSetupAction.java:43) 在io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.call(LegacyThreadSetupActionWrapper.java:44) 在io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.call(LegacyThreadSetupActionWrapper.java:44) 在io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.call(LegacyThreadSetupActionWrapper.java:44) 在io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.call(LegacyThreadSetupActionWrapper.java:44) 在io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.call(LegacyThreadSetupActionWrapper.java:44) 在io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:234)

09:41:37,854 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 72) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./spittr: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./spittr: java.lang.RuntimeException: java.lang.IllegalArgumentException: Failed to register servlet with name 'dispatcher'.Check if there is another servlet registered under the same name. at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 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) at org.jboss.threads.JBossThread.run(JBossThread.java:320) Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Failed to register servlet with name 'dispatcher'.Check if there is another servlet registered under the same name. at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:236) at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100) at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82) ... 6 more Caused by: java.lang.IllegalArgumentException: Failed to register servlet with name 'dispatcher'.Check if there is another servlet registered under the same name. at org.springframework.util.Assert.notNull(Assert.java:115) at org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.registerDispatcherServlet(AbstractDispatcherServletInitializer.java:98) at org.springframework.web.servlet.support.AbstractDispatcherServletInitializer.onStartup(AbstractDispatcherServletInitializer.java:71) at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169) at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:186) at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:171) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:234)

该错误的亮点是"无法注册名称为'dispatcher'的servlet.请检查是否在org.wildfly.extension上注册了另一个使用相同名称的servlet. undertow.deployment.UndertowDeploymentService $ 1.run(UndertowDeploymentService.java:85)"

请帮助我解决此问题.我在日食上使用WildFly-10.

Please help me to solve this problem. I using WildFly-10 on eclipse.

推荐答案

我的朋友遇到了同样的问题. 问题是没有为该类设置正确的程序包名称. AAA并在包装前清洁项目!!!

My friend encountered the same problem. The problem was that the correct package name was not set for the class. AAAAnd clean the project before packaging!!!

这是 GitHub

这篇关于java.lang.IllegalArgumentException:无法注册名称为'dispatcher'的servlet.检查是否有另一个以相同名称注册的servlet.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆