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:

本文介绍了SpringBoot启动时遇到'Failed to start bean 'documentationPluginsBootstrapper''错误的原因,通常是由Springboot版本与Swagger版本不兼容导致。作者分享了自己的解决过程,尝试了各种网上方法无效后,最终选择切换到Knife4j,并提供了相关的依赖、配置类、Controller和实体类的简化流程,以及测试下的 Knife4j 访问地址:http://localhost:8080/doc.html。

5008

被折叠的 条评论
为什么被折叠?



