首页 > 解决方案 > 升级 commons-lang-2.6.jar 会抛出 NoClassDefFoundError

问题描述

在此处输入图像描述我已将 commons-lang 的版本从“commons-lang-2.6.jar”升级到“commons-lang3-3.2.1.jar”。部署后,当我去测试特定链接时,它会抛出“严重:>>java.lang.NoClassDefFoundError:org/apache/commons/lang/StringUtils

java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils"。我已经升级了 Jar 以实现 Swagger 的兼容性。我正在使用 ant build,所有这些依赖项都在 'build.xml' 中声明,并且库被添加到 lib 文件夹中.

标签: javaantbuild.xml

解决方案


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

如果错误发生在您自己的代码中,则必须将其替换为org.apache.commons.lang3package 。

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

例如:

Lang 2.6 中的org.apache.commons.lang.StringUtils

对比

Lang 3 中的org.apache.commons.lang3.StringUtils


推荐阅读