笔者今日创建一个Spring Boot 项目准备做产品,基于IDEA搭建是非常容易的,但是万万没想到,居然一切顺理成章的创建之后,运行报错,非常痛惜,错误截图如下:
核心错误:
Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException
测试经过:
检查之前创建的框架结构,检查各种注解及相关代码,都正常,应该是没有问题的。
把之前创建的Swagger2依赖移除,因为就这块代码配置是最后一步,想着从后往前的测试方法检查,至于这是什么,不必多讲,非常出名了,不过我还是喜欢2.7.0旧版,最新的应该2.9.2吧,比较扁平化点。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
把依赖和相关的配置代码移除后,运行项目一切正常,看来应该是出在配置Swagger的配置上了。
解决办法:
经过一番对比估计是最新创建的项目部分库内部依赖存在冲突,因为一个月之前同样创建的项目配置Swagger就没有问题,最终发现确实如此:
在创建项目时版本有异同,我们从pom.xml文件中查看如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
而一个月之前创建的项目如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
很明显,版本已经从 2.5.6 变成了 2.6.0,因为创建Spring Boot 是如下图所示的在线方式:
至于其中的区别,笔者也没有时间来研究,就很任性的把 2.6.0 改为 2.5.6,再把Swagger的相关依赖和配置代码还原,重新运行项目成功,如下图:
后话:这个问题笔者也试图去解释,可惜没有很好的解决方案或雷同报错,所以如果有同笔者一样错误的,可临时修改一下版本号,让项目先跑起来吧。
============================
补丁:2022-07-01
笔者所遇到问题,已有热心朋友(chenthe1的博客_CSDN博客-golang,Mysql,rpc领域博主)解决,首先非常感谢这位同行的方案,截图如下:
解决方案:
原因: 这是因为Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher。
解决:在application.properties里配置:spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER。
或yml配置:
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
============================
推荐:如果想学习Spring Boot搭建项目或感兴趣想尝试的新手,笔者力荐这套课程:Spring Boot入门初体验--Java视频教程-编程语言-CSDN程序员研修院