Java 将web应用升级到Spring Boot 2.4后出现IllegalStateException
升级到Spring Boot 2.4后,我的web应用程序不再启动。它将抛出以下错误:Java 将web应用升级到Spring Boot 2.4后出现IllegalStateException,java,spring-boot,tomcat,servlets,contextpath,Java,Spring Boot,Tomcat,Servlets,Contextpath,升级到Spring Boot 2.4后,我的web应用程序不再启动。它将抛出以下错误: Unable to locate the default servlet for serving static content. Please set the 'defaultServletName' property explicitly. 我正在使用以下代码更改上下文路径,我的研究指出我是“罪魁祸首”(更改上下文路径): 我有以下方法,我可以看到它可以用来传递defaultServletName,但我不
Unable to locate the default servlet for serving static content. Please set the 'defaultServletName' property explicitly.
我正在使用以下代码更改上下文路径,我的研究指出我是“罪魁祸首”(更改上下文路径):
我有以下方法,我可以看到它可以用来传递defaultServletName,但我不知道应该传递什么值:
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
{
configurer.enable();
}
这在Spring Boot 2.3.4上非常有效。我在那里传递什么值?它是主控制器的名称吗?由于嵌入式Servlet容器提供的DefaultServlet
在默认情况下不再注册。如果您的应用程序需要它,正如您的应用程序所做的那样,您可以通过将server.servlet.register default servlet
设置为true
来启用它
或者,您可以使用WebServerFactoryCustomizer
bean以编程方式配置它:
@Bean
WebServerFactoryCustomizer enableDefaultServlet(){
return(factory)->factory.setRegisterDefaultServlet(true);
}
请注意,必须通过自定义程序应用配置,以便默认的基于属性的配置不会覆盖它。谢谢你,安迪,我想我昨天晚上读了那里的所有相关内容,但我想已经很晚了。这确实可以修复它,但是有没有一种方法可以通过编程的方式实现呢?试图减少我的application.properties文件中属性的数量。谢谢
TomcatServletWebServerFactory
上有一个setter,您可以使用它。我已经更新了我的答案。编程方法不起作用,我只能用propertyAh通过这个错误,是的。这是一个导致覆盖配置的排序问题。我用更好的方法更新了答案。是的,这很有效!谢谢安迪,你们太棒了!谢谢你的好产品!
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
{
configurer.enable();
}