springboot启动报错:Failed to start bean ‘documentationPluginsBootstrapper‘

本文介绍了SpringBoot启动时遇到'Failed to start bean 'documentationPluginsBootstrapper''错误的原因,通常是由Springboot版本与Swagger版本不兼容导致。作者分享了自己的解决过程,尝试了各种网上方法无效后,最终选择切换到Knife4j,并提供了相关的依赖、配置类、Controller和实体类的简化流程,以及测试下的 Knife4j 访问地址:http://localhost:8080/doc.html。
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonKey
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.3.jar:5.3.3]
	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:54) ~[spring-context-5.3.3.jar:5.3.3]
	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:356) ~[spring-context-5.3.3.jar:5.3.3]
	at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_161]
	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:155) ~[spring-context-5.3.3.jar:5.3.3]
	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:123) ~[spring-context-5.3.3.jar:5.3.3]
	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:940) ~[spring-context-5.3.3.jar:5.3.3]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:591) ~[spring-context-5.3.3.jar:5.3.3]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar:2.4.2]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) [spring-boot-2.4.2.jar:2.4.2]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.4.2.jar:2.4.2]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) [spring-boot-2.4.2.jar:2.4.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) [spring-boot-2.4.2.jar:2.4.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) [spring-boot-2.4.2.jar:2.4.2]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) [spring-boot-2.4.2.jar:2.4.2]
	at com.cyys.AdvApplication.main(AdvApplication.java:16) [classes/:na]
Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonKey
	at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.hasAsKey(JacksonAnnotationIntrospector.java:1080) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.hasAsKey(AnnotationIntrospectorPair.java:619) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._addFields(POJOPropertiesCollector.java:495) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collectAll(POJOPropertiesCollector.java:421) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getPropertyMap(POJOPropertiesCollector.java:386) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getProperties(POJOPropertiesCollector.java:233) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.BasicBeanDescription._properties(BasicBeanDescription.java:164) ~[jackson-databind-2.12.5.jar:2.12.5]
	at com.fasterxml.jackson.databind.introspect.BasicBeanDescription.findProperties(BasicBeanDescription.java:239) ~[jackson-databind-2.12.5.jar:2.12.5]
	at springfox.documentation.schema.property.OptimizedModelPropertiesProvider.propertiesFor(OptimizedModelPropertiesProvider.java:147) ~[springfox-schema-2.10.5.jar:null]
	at springfox.documentation.schema.property.OptimizedModelPropertiesProvider.propertiesFor(OptimizedModelPropertiesProvider.java:132) ~[springfox-schema-2.10.5.jar:null]
	at springfox.documentation.schema.property.CachingModelPropertiesProvider.lambda$new$0(CachingModelPropertiesProvider.java:51) ~[springfox-schema-2.10.5.jar:null]
	at java.util.HashMap.computeIfAbsent(HashMap.java:1127) ~[na:1.8.0_161]
	at springfox.documentation.schema.property.CachingModelPropertiesProvider.propertiesFor(CachingModelPropertiesProvider.java:57) ~[springfox-schema-2.10.5.jar:null]
	at springfox.documentation.schema.DefaultModelProvider.properties(DefaultModelProvider.java:187) ~[springfox-schema-2.10.5.jar:null]
	at springfox.documentation.schema.DefaultModelProvider.reflectionBasedModel(DefaultModelProvider.java:106) ~[springfox-schema-2.10.5.jar:null]
	at springfox.documentation.schema.DefaultModelProvider.modelFor(DefaultModelProvider.java:97) ~[springfox-schema-2.10.5.jar:null]
	at java.util.HashMap.computeIfAbsent(HashMap.java:1127) ~[na:1.8.0_161]
	at springfox.documentation.schema.CachingModelProvider.modelFor(CachingModelProvider.java:54) ~[springfox-schema-2.10.5.jar:null]
	at springfox.documentation.spring.web.scanners.ApiModelReader.read(ApiModelReader.java:110) ~[springfox-spring-web-2.10.5.jar:null]
	at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:143) ~[springfox-spring-web-2.10.5.jar:null]
	at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:69) ~[springfox-spring-web-2.10.5.jar:null]
	at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.scanDocumentation(AbstractDocumentationPluginsBootstrapper.java:97) ~[springfox-spring-web-2.10.5.jar:null]
	at springfox.documentation.spring.web.plugins.AbstractDocumentationPluginsBootstrapper.bootstrapDocumentationPlugins(AbstractDocumentationPluginsBootstrapper.java:83) ~[springfox-spring-web-2.10.5.jar:null]
	at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:94) ~[springfox-spring-web-2.10.5.jar:null]
	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:178) ~[spring-context-5.3.3.jar:5.3.3]
	... 15 common frames omitted
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonKey
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_161]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_161]
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) ~[na:1.8.0_161]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_161]
	... 40 common frames omitted

这个问题一般都是springboot版本和swagger版本之间的冲突

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.10.5</version>
        </dependency>

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>1.5.20</version>
        </dependency>

这是我的swagger包,去掉就能运行了……网上的解决方法我全都试过,要么复杂,要么解决不了我的问题,要么就是又复杂又解决不了我的问题,不知道是不是我的问题😢

解决办法,bug解决方法千千万,实在不行我换一个,毕竟方法总比困难过:

我改用---knife4j:

依赖:

        <!--knife4j-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.7</version>
        </dependency>

配置类: 

@Configuration
@EnableOpenApi
public class Knife4jConfig {
    @Bean(value = "defaultApi2")
    public Docket defaultApi2() {
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(new ApiInfoBuilder()
                        //.title("swagger-bootstrap-ui-demo RESTful APIs")
                        .description("# swagger-bootstrap-ui-demo RESTful APIs")
                        .termsOfServiceUrl("https://angegit.gitee.io/myblog/")
                        .contact("xx@qq.com")
                        .version("1.0")
                        .build())
                //分组名称
                .groupName("2.X版本")
                .select()
                //这里指定Controller扫描包路径
                .apis(RequestHandlerSelectors.basePackage("com.cyys.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }
}

Controller

@Api(tags = "种类")
@RestController
@RequestMapping("/Category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    @GetMapping("/CategoryList")
    public Result categoryList(Integer sid){

        List<Category> CategoryGoods = categoryService.getStoreId(sid);
        return Result.ok().data("CategoryGoods",CategoryGoods);
    }
}

实体类:

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Adv对象", description="广告信息")
public class Adv implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @ApiModelProperty(value = "创建时间")
    private Date gmt_create;

    @ApiModelProperty(value = "修改时间")
    private Date gmt_modified;

    @ApiModelProperty(value = "状态(1:正常,0:禁用)")
    private Integer status_id;

    @ApiModelProperty(value = "排序")
    private Integer sort;

}

测试

knife4j跟Tomcat共用一个端口,默认Tomcat是8080。访问地址加/doc.html:

http://localhost:8080/doc.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值