IllegalArgumentException:发现了多个名称为[spring_web]的片段

时间:2019-06-27 12:47:15

标签: java xml spring-mvc tomcat

我正在学习Spring MVC,并且我有一个使用xml的简单Web应用程序。该应用程序运行完美。之后,我尝试仅使用Java代码(无xml)来做相同的应用程序。因此,我创建了一个新的Web应用程序,删除了web.xml和另一个xml文件,并添加了2个用于配置的类。

这是第一类配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.dgs.springdemo")
public class DemoAppConfig {

    // define a bean for ViewResolver

    @Bean
    public ViewResolver viewResolver() {

        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

        viewResolver.setPrefix("/WEB-INF/view/");
        viewResolver.setSuffix(".jsp");

        return viewResolver;
    }

}

第二堂课

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class MySpringMvcDispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { DemoAppConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}

如果我运行该应用程序,则会出现以下错误:“本地主机上的Server Tomcat v9.0 Server无法启动。”

然后我在控制台中收到此消息:

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/spring-mvc-java-code]]

...

Caused by: java.lang.IllegalArgumentException: More than one fragment with the name [spring_web] was found. This is not legal with relative ordering. See section 8.2.2 2c of the Servlet specification for details. Consider using absolute ordering.

我已经在线搜索了解决方案,我发现需要在<absolute-ordering/>中添加web.xml。但是我没有web.xml,因为我只使用Java代码(没有xml)。另外我不使用Maven。请帮我。任何反馈将不胜感激。

0 个答案:

没有答案