我在尝试从spring启动应用程序提供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);
}
}
我不确定我在这里遗失了什么。
由于
答案 0 :(得分:8)
问题是Jersey servlet路径的默认设置,默认设置为/*
。这会占用所有请求,包括请求静态内容的默认servlet。因此请求将在Jersey查找静态内容,当它无法在Jersey应用程序中找到资源时,它将发送一个404.
你有几个选择:
将Jerse运行时配置为过滤器(默认情况下不是作为servlet)。有关如何执行此操作,请参阅this post。此外,使用此选项,您需要配置ServletProperties
之一以将404转发到servlet容器。您可以使用配置Jersey的属性转发所有请求,这会导致找不到Jersey资源,或者使用允许您为请求配置正则表达式模式的属性。
您可以简单地将Jersey servlet模式更改为默认值以外的其他模式。最简单的方法是使用ResourceConfig
注释您的@ApplicationPath("/root-path")
子类。或者您可以在application.properties
- spring.jersey.applicationPath
。