java - 升级 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 文件夹中.
解决方案
不再是 Apache Commons Lang 3 的基础包org.apache.commons.lang
。
如果错误发生在您自己的代码中,则必须将其替换为org.apache.commons.lang3
package 。
如果它发生在外部库中,请将它们升级到使用 Lang 3 的版本(如果可能的话),或者您可能还必须在依赖项中保留较旧的commons lang(如 Karol 的回答中所解释的,不同的包无论如何都会防止可能的冲突)。
例如:
Lang 2.6 中的org.apache.commons.lang.StringUtils
对比
Lang 3 中的org.apache.commons.lang3.StringUtils
推荐阅读
- m4 - 如何正确检测 m4 中的定义/变量是否为空,而它可以包含逗号?
- java - 数组返回值问题中的Java递归线性搜索
- dart - 如何使用 Provider 包初始化状态?
- django - 根据用户自定义权限过滤视图
- c++ - 在 VSCode 和 OpenCV 中编辑 C++ 项目,无需安装整个库
- android - file.exists() 返回 false
- matlab - 将额外的迭代相关输入传递给 ode45
- swift - 在 stackview 中隐藏视图仍然保持约束处于活动状态
- google-chrome - getSignedUrl - 如何从网络浏览器上传大文件?
- qtp - 如何在 UFT 中退出测试用例