升级commons-lang-2.6.jar会引发NoClassDefFoundError

时间:2018-08-24 13:23:53

标签: java ant build.xml

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

  

3 个答案:

答案 0 :(得分:1)

Apache Commons Lang 3的基本软件包不再是org.apache.commons.lang

假设该错误发生在您自己的代码中,则必须用org.apache.commons.lang3包替换它。

如果它在外部库中发生,请将它们升级到使用Lang 3的版本(如果可能),或者您可能还必须在依赖项之间保留较旧的 common lang (例如卡洛尔(Karol)的答案中所述,不同的软件包无论如何都将防止可能的冲突)。

例如:

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

vs

org.apache.commons.lang3.StringUtils in Lang 3

答案 1 :(得分:1)

commons-lang3使用org.apache.commons.lang3基本软件包来避免与commons-lang的早期版本发生冲突。这样可以同时使用2.X3.X

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

import org.apache.commons.lang3.StringUtils;

答案 2 :(得分:1)

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