Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“

目录

  • 一、 问题表述:
    • 1. Swagger概述
    • 2. 报错信息
    • 3. 源码截图:
  • 二、问题分析
    • 1. 主要报错信息:
    • 2. 问题解决
      • (1) 添加依赖
      • (2) 修改SpringBoot版本
  • 三、常用注解说明
          • @Api
          • @ApiOperation
          • @ApiParam
          • @ApiModel
          • @ApiModelProperty
          • @ApiResponse
          • @ApiResponses
          • @ApiIgnore
          • @ApiError
          • @ApiImplicitParam
          • @ApiImplicitParam

一、 问题表述:

1. Swagger概述

spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口。这些接口不但会服务于传统的web端(b/s),也会服务于移动端。在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题。

假如你已经对传统的wiki文档共享方式所带来的弊端深恶痛绝,那么尝试一下Swagger2 方式,一定会让你有不一样的开发体验。

使用 Swagger 集成文档具有以下几个优势:

  • 功能丰富 :支持多种注解,自动生成接口文档界面,支持在界面测试API接口功能;
  • 及时更新 :开发过程中花一点写注释的时间,就可以及时的更新API文档,省心省力;
  • 整合简单 :通过添加pom依赖和简单配置,内嵌于应用中就可同时发布API接口文档界面,不需要部署独立服务。

2. 报错信息

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.13.jar:5.3.13]
	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.13.jar:5.3.13]
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.13.jar:5.3.13]
	at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_131]
	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.13.jar:5.3.13]
	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.13.jar:5.3.13]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:935) ~[spring-context-5.3.13.jar:5.3.13]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:586) ~[spring-context-5.3.13.jar:5.3.13]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.0.jar:2.6.0]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) [spring-boot-2.6.0.jar:2.6.0]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) [spring-boot-2.6.0.jar:2.6.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) [spring-boot-2.6.0.jar:2.6.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) [spring-boot-2.6.0.jar:2.6.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) [spring-boot-2.6.0.jar:2.6.0]
	at com.chuci.chucimanagement.ChuCiManagementApplication.main(ChuCiManagementApplication.java:10) [classes/:na]
Caused by: java.lang.NullPointerException: null
	at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:112) ~[springfox-spi-2.9.2.jar:null]
	at springfox.documentation.spi.service.contexts.Orderings$8.compare(Orderings.java:109) ~[springfox-spi-2.9.2.jar:null]
	at com.google.common.collect.ComparatorOrdering.compare(ComparatorOrdering.java:37) ~[guava-25.1-jre.jar:na]
	at java.util.TimSort.countRunAndMakeAscending(TimSort.java:355) ~[na:1.8.0_131]
	at java.util.TimSort.sort(TimSort.java:220) ~[na:1.8.0_131]
	at java.util.Arrays.sort(Arrays.java:1438) ~[na:1.8.0_131]
	at com.google.common.collect.Ordering.sortedCopy(Ordering.java:852) ~[guava-25.1-jre.jar:na]
	at springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider.requestHandlers(WebMvcRequestHandlerProvider.java:57) ~[springfox-spring-web-2.9.2.jar:null]
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:138) ~[springfox-spring-web-2.9.2.jar:null]
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper$2.apply(DocumentationPluginsBootstrapper.java:135) ~[springfox-spring-web-2.9.2.jar:null]
	at com.google.common.collect.Iterators$6.transform(Iterators.java:785) ~[guava-25.1-jre.jar:na]
	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47) ~[guava-25.1-jre.jar:na]
	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:47) ~[guava-25.1-jre.jar:na]
	at com.google.common.collect.Iterators$ConcatenatedIterator.hasNext(Iterators.java:1332) ~[guava-25.1-jre.jar:na]
	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:270) ~[guava-25.1-jre.jar:na]
	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:234) ~[guava-25.1-jre.jar:na]
	at com.google.common.collect.FluentIterable.toList(FluentIterable.java:617) ~[guava-25.1-jre.jar:na]
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.defaultContextBuilder(DocumentationPluginsBootstrapper.java:111) ~[springfox-spring-web-2.9.2.jar:null]
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.buildContext(DocumentationPluginsBootstrapper.java:96) ~[springfox-spring-web-2.9.2.jar:null]
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:167) ~[springfox-spring-web-2.9.2.jar:null]
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.13.jar:5.3.13]
	... 14 common frames omitted

3. 源码截图:


Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第1张图片
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第2张图片
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第3张图片
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第4张图片

二、问题分析

1. 主要报错信息:

Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

2. 问题解决

(1) 添加依赖

根据百度信息,找到其中一个原因

因为swagger2是依赖于Google的guava,我本项目中引入的swagger2是最高版本,因此引入下面的guava.jar包,版本25.1-jre,否侧报错“Failed to start bean 'documentationPluginsBootstrapper
原文链接:https://www.codeleading.com/article/87382318697/

  1. 引入swagger2的jar包。

        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger2artifactId>
            <version>2.9.2version>
        dependency>
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger-uiartifactId>
            <version>2.9.2version>
        dependency>
  1. 引入guava

        <dependency>
            <groupId>com.google.guavagroupId>
            <artifactId>guavaartifactId>
            <version>25.1-jreversion>
        dependency>

引入需要依赖,本以为妥了,最终启动项目还是同样的报错。

(2) 修改SpringBoot版本

深度思考之后,改动自己SpringBoot版本:2.6.0 -> 2.5.7
完美运行!!!
贴图:
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第5张图片
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第6张图片
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第7张图片
Swagger-Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception is “空指针异常“_第8张图片
创建SpringBoot项目,对于新版本暂时处于观望状态,很多依赖资源的引入会出现莫名错误。新手入坑记录一番,避免往后继续犯错。

三、常用注解说明

swagger 通过注解接口生成文档,包括接口名,请求方法,参数,返回信息等。

@Api

修饰整个类,用于controller类上

@ApiOperation

描述一个接口,用户controller方法上

@ApiParam

单个参数描述

@ApiModel

用来对象接收参数,即返回对象

@ApiModelProperty

对象接收参数时,描述对象的字段

@ApiResponse

Http响应其中的描述,在ApiResonse中

@ApiResponses

Http响应所有的描述,用在

@ApiIgnore

忽略这个API

@ApiError

发生错误的返回信息

@ApiImplicitParam

一个请求参数

@ApiImplicitParam

多个请求参数

更多使用说明,可参考 Swagger 使用手册。

你可能感兴趣的:(BUG日志册,java,spring,boot,swagger2)