SpringFox 2.9.2版本无法访问Swagger RequestHandlerSelectors版本冲突如何解决
Correct the classpath of your application so that it contains a single, compatible version of springfox.documentation.builders.RequestHandlerSelectors
问题产生原因
- 核心原因是应用类路径下存在多个版本的SpringFox相关依赖,导致
springfox.documentation.builders.RequestHandlerSelectors类出现版本冲突,JVM实际加载的类版本和SpringFox 2.9.2要求的版本不兼容。 - 常见触发场景:
- 项目直接引入了多个不同版本的springfox-core、springfox-swagger2、springfox-swagger-ui依赖
- 项目依赖的第三方组件传递引入了其他版本的SpringFox依赖
- 本地构建缓存异常,旧版本SpringFox依赖残留,打包时被打入应用
排查与解决方法
1. 排查依赖冲突
- Maven项目执行命令:
mvn dependency:tree | grep springfox,输出所有SpringFox相关依赖的版本和引入来源 - Gradle项目执行命令:
gradle dependencies | grep springfox,梳理所有SpringFox依赖的传递关系 - 检查输出结果,标记所有非2.9.2版本的SpringFox依赖,确认其引入路径
2. 处理冲突依赖
- 若为直接引入多版本SpringFox:仅保留2.9.2版本的springfox-swagger2和springfox-swagger-ui依赖,删除其余版本的SpringFox直接依赖
- 若为第三方组件传递引入冲突版本:在对应第三方依赖的声明中排除SpringFox传递依赖,Maven配置示例:
<dependency> <groupId>冲突依赖所属groupId</groupId> <artifactId>冲突依赖所属artifactId</artifactId> <version>冲突依赖版本</version> <exclusions> <exclusion> <groupId>io.springfox</groupId> <artifactId>springfox-core</artifactId> </exclusion> <exclusion> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </exclusion> </exclusions> </dependency>
- 如需统一锁定所有SpringFox依赖版本,可在依赖管理节点添加配置,Maven示例:
<dependencyManagement> <dependencies> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-core</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> </dependencies> </dependencyManagement>
3. 清理缓存重新构建
- 清理项目构建缓存:Maven执行
mvn clean,Gradle执行gradle clean - 清理IDE缓存后重启IDE,重新构建项目启动验证
适配注意事项
- SpringFox 2.9.2与SpringBoot 2.6及以上版本存在默认路径匹配策略冲突,解决依赖冲突后仍无法访问的,可在配置文件添加配置:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher - 确认Swagger配置类已添加
@EnableSwagger2注解,RequestHandlerSelectors的引用路径无误
内容的提问来源于stack exchange,提问作者Raaghavi Ravisankar
相关产品推荐
相关产品推荐

