最近一段时间参与部署一个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文件引入。完美解决。
- lang String Ljava NoSuchMethodError StringUtilslang string ljava nosuchmethoderror ljava lang nosuchmethoderror quot ljava nosuchmethoderror lang atomicreference nosuchmethoderror lang charsequence stringutils nosuchmethoderror lang stringutils mybatisplus ljava string list lang ljava lang jdbc4resultset 4resultset tokenizetostringarray quot stringutils string ljava stringutils