尽管pom中包含CommonsLang,但获得异常java.lang.NoSuchMethodError:org.apache.commons.lang.StringUtils.join

尽管pom中包含CommonsLang,但获得异常java.lang.NoSuchMethodError:org.apache.commons.lang.StringUtils.join,java,maven,weblogic,classpath,apache-commons-lang,Java,Maven,Weblogic,Classpath,Apache Commons Lang,我有以下几点 String pattern = "\\b(" + StringUtils.join(mypattern, "|") + ")\\b"; 在pom.xml中,我对 <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version>

我有以下几点

String pattern = "\\b(" + StringUtils.join(mypattern, "|") + ")\\b";
在pom.xml中,我对

<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>

公地郎
公地郎
2.6
然而,当我执行时,我得到以下错误,尽管有
commons lang

java.lang.NoSuchMethodError:org.apache.commons.lang.StringUtils.join (Ljava/util/Collection;Ljava/lang/String;)Ljava/lang/String

我如何解决这个问题

更新1

战争内容

战争结构

  • 查看您发布的行中是否抛出了错误(检查完整的堆栈跟踪)
  • 检查commons-lang.jar是否位于war(文件夹/WEB-INF/lib/)中,并且与您预期的jar版本相同
  • 检查是否没有加载其他公共语言。例如,如果您正在Tomcat中部署,请检查Tomcat/lib目录中是否没有其他commons lang

  • jar在你的运行时类路径中吗?你的类路径上有旧的(2.3之前的)commons lang版本吗?这不是一个真正的布局——它只是一个jar文件列表。它没有显示它们在war文件中的位置。服务器上的其他地方呢?是否存在可能导致问题的较旧版本的commons lang?@Polppan不,您没有。您只显示了war中的顶级文件夹和文件。我们仍然不知道jar文件在war文件中的位置。对-这是我从一开始就在寻找的。哦,好吧。我有一个可以使用的诊断步骤-在代码的前面,打印出
    StringUtils.class.getClassLoader().getResource(“org/apache/commons/lang/StringUtils.class”)
    -它将显示类的加载位置。在weblogic server中,有
    com.bea.core.apache.commons.lang_2.1.0.jar
    ,那么这一定是问题的根源?如果是这样,如何不使用jar的服务器版本?