Обновление commons-lang-2.6.jar throws NoClassDefFoundError - PullRequest
0 голосов
/ 24 августа 2018

enter image description here Я обновил версию commons-lang с 'commons-lang-2.6.jar' до 'commons-lang3-3.2.1.jar'. После развертывания, когда я иду, чтобы проверить конкретную ссылку, он выдает «SEVERE: >> java.lang.NoClassDefFoundError: org / apache / commons / lang / StringUtils

java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils ". Я обновил совместимость Jar for Swagger. Я использую ant build, все эти зависимости объявлены в build.xml и добавлены библиотеки в папке lib.

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

commons-lang3 использует org.apache.commons.lang3 базовый пакет, чтобы избежать конфликтов с предыдущими версиями commons-lang.Это позволяет одновременно использовать 2.X и 3.X.

Для обновления до 3.X вам необходимо изменить import в вашем коде, например, использовать

import org.apache.commons.lang3.StringUtils;
0 голосов
/ 24 августа 2018

Это потому, что commons-lang3 не имеет пакета, который используется в commons-lang2.Класс StringUtils находится в org.apache.commons.lang3.Пакет org.apache.commons.lang не существует в commons-lang3.

0 голосов
/ 24 августа 2018

Базовый пакет 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

против

орг.apache.commons.lang3.StringUtils в Lang 3

...