swagger-ui.html 404问题解决

Spring boot整合swagger2(版本号:2.9.2)出现404错误。这个实在没啥说的直接上错误和解决方法。

错误提示

页面出现这个错误:

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Jan 06 16:38:25 CST 2020
There was an unexpected error (type=Not Found, status=404).
No message available 

java控制台出现这样的日志:

o.s.web.servlet.DispatcherServlet - GET "/swagger-ui.html", parameters={}
o.s.web.servlet.PageNotFound - No mapping for GET /swagger-ui.html
o.s.web.servlet.DispatcherServlet - Completed 404 NOT_FOUND
o.s.web.servlet.DispatcherServlet - "ERROR" dispatch for GET "/error", parameters={}
o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped to public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
o.s.web.servlet.DispatcherServlet - Exiting from "ERROR" dispatch, status 404

但是/v2/api-docs又是可以访问的。

解决办法

办法1、检查是否有地方加了这个注解@EnableWebMvc,有的话删掉就可以了。

办法2、检查是否有类继承了WebMvcConfigurationSupport,有的话删掉就可以了。

因为上面两个会覆盖spring mvc原本的配置,比如覆盖yml里面的配置。

办法3、另外一种解决办法,就是继承WebMvcConfigurationSupport后,重写下面的方法,重新配置静态资源:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**").addResourceLocations(
            "classpath:/static/");
    registry.addResourceHandler("swagger-ui.html").addResourceLocations(
            "classpath:/META-INF/resources/");
    registry.addResourceHandler("/webjars/**").addResourceLocations(
            "classpath:/META-INF/resources/webjars/");
    super.addResourceHandlers(registry);
}

按上面三种方法排查,404错误基本可以得到解决了。 重新启动服务器,你会发现那个绿黄绿黄的swagger页面又出现了。

404错误github参考:https://github.com/springfox/springfox/issues/776

补充(2020-05-13)

笔者正在做的一个项目,引入了springfox-swagger2后,按照上面三个步骤检测了,swagger-ui.html页面依然404,后来排查发现,springfox-swagger-ui这个包没有被依赖引入。 在pom.xml里面加上这个swagger ui的jar包引用就可以了。

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:swagger-ui.html 404问题解决

本文地址:https://jizhong.plus/post/2020/01/swagger-ui-404.html