我有一个我最近从springboot升级到springboot 2的Web应用程序。当我将其部署到Tomcat 8时,它似乎可以启动,但不能完全启动。

在localhost.2019-09-04.log(Tomcat)中,我遇到以下错误:

2 Spring WebApplicationInitializers detected on classpath


我从这篇文章中尝试了各种方法:

2 Spring WebApplicationInitializers detected on classpath

但没有运气。我如何找出另一个WebApplicationInitializers可能位于哪个程序包中?

最佳答案

该日志是从SpringServletContainerInitializer的输出,它是处理ServletContainerInitializer的Servlet 3.0 WebApplicationInitializer

因此,找出这些WebApplicationInitializer的最简单方法是创建我们自己的ServletContainerInitializer,它们也可以处理WebApplicationInitializer并将其信息打印到控制台。

@HandlesTypes(WebApplicationInitializer.class)
public class FooServletContainerInitializer implements ServletContainerInitializer {

    @Override
    public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
        for (Class<?> clazz : c) {
            System.out.println(clazz);
            System.out.println(clazz.getResource('/' + clazz.getName().replace('.', '/') + ".class"));
            System.out.println("----------------");
        }

    }
}



我指的是this关于如何打印类的JAR文件路径。


要注册它,请创建一个文件META-INF/services/javax.servlet.ServletContainerInitializer。在此文件中,包括我们ServletContainerInitializer的完全限定的类名:

org.foo.bar.FooServletContainerInitializer


然后它应该在Tomcat启动期间执行。

关于java - Springboot-> Springboot 2:在类路径上检测到2个Spring WebApplicationInitializers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57791571/

10-09 02:55