JAX-RS RestEasy应用Swagger UI 404错误求助
解决Swagger-UI 404问题的实操方案
1. 核对静态资源存放路径
先确认swagger-ui的所有文件(包括index.html、js、css等)都放在webapp/docs/swaggerui/目录下,且index.html直接在该目录中,没有嵌套更深的层级。同时要确保这些文件的权限正常,web容器能够读取。
2. 调整JAX-RS资源映射规则
如果你的JAX-RS应用配置了@ApplicationPath("/*"),会导致所有请求被JAX-RS接管,静态资源无法正常访问,需要添加放行规则:
- 若使用
web.xml配置,新增以下代码:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/docs/*</url-pattern> </servlet-mapping>
- 若使用注解无
web.xml,在JAX-RS应用类中添加静态资源排除逻辑:
@ApplicationPath("/") public class YourApplication extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> classes = new HashSet<>(); classes.add(ApiListingResource.class); classes.add(SwaggerSerializers.class); // 加入你的其他API业务类 return classes; } @Override public Map<String, Object> getProperties() { Map<String, Object> props = new HashMap<>(); // 让web容器自行处理/docs开头的静态资源请求 props.put("resteasy.resources", "/docs/*"); return props; } }
3. 修正index.html中的swagger.json路径
打开swagger-ui的index.html,找到配置swagger数据源的代码块,确保路径和你能正常访问的/chatbox/swagger.json完全一致:
const ui = SwaggerUIBundle({ url: "/chatbox/swagger.json", dom_id: '#swagger-ui', // 其他配置保持不变 });
4. 验证应用部署上下文路径
确认你的应用部署后的上下文路径确实是/chatbox,如果上下文路径是根路径(即/),则访问地址应改为localhost:8080/docs/swaggerui/index.html。
5. 改用webjars自动引入swagger-ui(可选)
如果手动放置静态资源麻烦,可以通过maven依赖自动引入:
在pom.xml中添加依赖:
<dependency> <groupId>org.webjars</groupId> <artifactId>swagger-ui</artifactId> <version>4.18.3</version> <!-- 选择最新稳定版本即可 --> </dependency>
此时访问地址变为localhost:8080/chatbox/webjars/swagger-ui/index.html,同样需要修改index.html中的swagger.json路径为/chatbox/swagger.json。
内容的提问来源于stack exchange,提问作者Mr Owl
相关产品推荐
相关产品推荐

