升级 commons-lang-2.6.jar 抛出 NoClassDefFoundError

Upgrading the commons-lang-2.6.jar throws NoClassDefFoundError

我已经将 commons-lang 的版本从 'commons-lang-2.6.jar' 升级到 'commons-lang3-3.2.1.jar'。部署后,当我去测试特定的 link 它抛出“严重:>>java.lang.NoClassDefFoundError:org/apache/commons/lang/StringUtils

java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils". I have upgraded the Jar for Swagger compatability. I am using ant build, all these dependencies are declared in 'build.xml' and libraries are added in lib folder.

Apache Commons Lang 3 的基础包不再 org.apache.commons.lang

前提是你自己的代码出现错误,你得换成org.apache.commons.lang3包。

如果它出现在外部库中,请将它们升级到使用 Lang 3 的版本(如果可能),或者您可能还必须保留旧的 commons lang在依赖关系中(正如 Karol 在回答中所解释的那样,不同的包无论如何都会防止可能的冲突)。

例如:

org.apache.commons.lang.StringUtils 在 Lang 2.6

对比

org.apache.commons.lang3.StringUtils 语言 3

commons-lang3 正在使用 org.apache.commons.lang3 基础包以避免与以前版本的 commons-lang 发生冲突。这允许同时使用 2.X3.X

要更新到 3.X,您必须更改代码中的 import,例如使用

import org.apache.commons.lang3.StringUtils;

那是因为 commons-lang3 没有 commons-lang2 中使用的包。 class StringUtils 在 org.apache.commons.lang3 中。包 org.apache.commons.lang 不存在于 commons-lang3.