【问题标题】:Upgrading the commons-lang-2.6.jar throws NoClassDefFoundError升级 commons-lang-2.6.jar 会抛出 NoClassDefFoundError
【发布时间】:2018-08-24 13:23:52
【问题描述】:

我已经将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 文件夹中。

【问题讨论】:

  • 一个或多个库引用旧版本。使用 Eclipse 之类的 IDE 来检查其他库的依赖关系。
  • 额外检查一些类路径定义。
  • @reporter 你能告诉我在 Eclipse 中如何检查其他库的依赖关系吗?有没有这样的方法,可以告诉我们错过的库?

标签: java ant build.xml


【解决方案1】:

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 in Lang 3

【讨论】:

    【解决方案2】:

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

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

    import org.apache.commons.lang3.StringUtils;
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-29
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 2023-01-03
        相关资源
        最近更新 更多