java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.endsWith(Ljava/lang/String;Ljava/lang/String;)Z

发布时间 2023-07-03 11:08:21作者: 小log

最近一段时间参与部署一个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文件引入。完美解决。