尝试从Spring Boot应用程序提供index.html(位于main / resources / static下)时遇到HTTP 404错误。但是,如果我从项目中删除基于Jersey的JAX-RS类,则http:// localhost:8080 / index.html可以正常工作。
以下是主班
@SpringBootApplication public class BootWebApplication { public static void main(String[] args) { SpringApplication.run(BootWebApplication.class, args); } }
我不确定在这里是否缺少任何东西。
谢谢
问题是Jersey servlet路径的默认设置,默认设置为/*。这将占用所有请求,包括对默认servlet的静态内容请求。因此,该请求将转到Jersey寻找静态内容,并且当它在Jersey应用程序中找不到资源时,它将发出404。
/*
您可以选择以下几种方法:
将Jerse运行时配置为过滤器(默认情况下,而不是servlet)。同样使用此选项,您需要配置之一ServletProperties以将404转发到servlet容器。您可以使用配置Jersey的属性转发 _所有_导致找不到Jersey资源的请求,或者使用该属性为请求转发配置正则表达式模式。
ServletProperties
您可以简单地将Jersey servlet模式更改为默认值以外的其他值。最简单的方法是使用注释ResourceConfig子类@ApplicationPath("/root-path")。或者,您可以在application.properties-中进行配置spring.jersey.applicationPath。
ResourceConfig
@ApplicationPath("/root-path")
application.properties
spring.jersey.applicationPath