java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.endsWith(Ljava/lang/String;Ljava/lang/String;)Z
最近一段时间参与部署一个spring mvc项目,打成war包,放到tomcat里。本地测试没有问题,部署到线上就有时会报错 “java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.endsWith(Ljava/lang/String;Ljava/lang/String;)Z”,百度了下是出现了包冲突。
我首先查看了pom文件,并用idea查看了依赖图,并没有相关冲突问题。
后面,我去tomcat 中的 webapps 中项目 lib下查看jar包,发现项目两个名称类似,一个全称一个简称的两个jar包,后面寻找两个jar包来历,一个在项目的webapps的lib目录下,一个在pom中引入。
因此,我发现了问题的原因:由于webapps的lib目录下引入了相同jar包,但是版本靠前,没有相关的方法。而我在本地idea测试时,不通系统间的jar包加载顺序问题。
解决方案: 删除webapps中jar包,统一使用maven pom文件引入。完美解决。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现