我最近有一个网络应用程序,我最近从springboot升级到springboot 2。当我将其部署到Tomcat 8时,它似乎启动了,但没有完全启动。
在本地主机.2019-09-04.log(雄猫(我有以下错误:
2 Spring WebApplicationInitializers detected on classpath
我已经从这篇文章中尝试了各种东西:
2 在类路径上检测到 Spring Web 应用程序初始值设定项
但没有运气。如何找出另一个 Web 应用程序初始值设定项可能位于哪个包中?
该日志是从处理WebApplicationInitializer
的 Servlet 3.0ServletContainerInitializer
SpringServletContainerInitializer
输出的。
因此,找出这些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("----------------");
}
}
}
我指的是如何打印类的 JAR 文件路径。
要注册它,请创建一个文件META-INF/services/javax.servlet.ServletContainerInitializer
。在这个文件中,包括我们ServletContainerInitializer
的完全限定类名:
org.foo.bar.FooServletContainerInitializer
然后它应该在 Tomcat 启动期间执行。
我遇到了这个问题,在以最低限度做了一个新的基本弹簧靴后,我仍然遇到了这个问题。剩下的最后一件事是检查无辜的应用程序属性,并通过反复试验发现存在无效属性。删除此行后,一切正常。
这是属性:
logging.level.org.apache.catalina=DEBUG