You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Swagger时出现StringUtils.containsAny()方法缺失错误

问题描述

在Spring Boot(Gradle)项目集成Swagger时出现以下错误:

2024-06-03T16:01:55.361+05:30  INFO 38783 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2024-06-03T16:01:55.361+05:30  INFO 38783 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2024-06-03T16:01:55.362+05:30  INFO 38783 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
2024-06-03T16:01:55.764+05:30 ERROR 38783 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.NoSuchMethodError: 'boolean org.apache.commons.lang3.StringUtils.containsAny(java.lang.CharSequence, java.lang.CharSequence[])'] with root cause

java.lang.NoSuchMethodError: 'boolean org.apache.commons.lang3.StringUtils.containsAny(java.lang.CharSequence, java.lang.CharSequence[])'
    at org.springdoc.api.AbstractOpenApiResource.buildPathItem(AbstractOpenApiResource.java:1102) ~[springdoc-openapi-starter-common-2.1.0.jar:2.1.0]

使用的依赖:

implementation 'org.apache.commons:commons-lang3:3.12.0'
implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.1.0'

相同依赖在其他项目正常运行,但新建项目出现该问题。

原因分析

这个错误是类路径中存在低版本的commons-lang3,与你声明的3.12.0版本冲突导致的。StringUtils.containsAny(CharSequence, CharSequence[])这个方法重载是在commons-lang3 3.8及以上版本才新增的,低版本没有该方法。新建项目可能通过其他依赖间接引入了更低版本的commons-lang3,比如Spring Boot部分starter默认依赖的版本低于3.12.0,导致运行时实际加载了低版本的类文件。

解决方案
  • 强制指定commons-lang3版本:在Gradle配置中添加强制依赖规则,确保所有模块统一使用3.12.0版本:
    configurations.all {
        resolutionStrategy.force 'org.apache.commons:commons-lang3:3.12.0'
    }
    
  • 排查并排除低版本依赖:执行./gradlew dependencies命令查看依赖树,定位引入低版本commons-lang3的依赖,然后排除其传递依赖。例如:
    implementation('org.springframework.boot:spring-boot-starter-web') {
        exclude group: 'org.apache.commons', module: 'commons-lang3'
    }
    
  • 清理Gradle缓存:缓存中可能残留旧版本jar,执行以下命令清理缓存并重新构建:
    ./gradlew clean build --refresh-dependencies
    

内容的提问来源于stack exchange,提问作者Ùtkårsh Thãkûr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:21