Тесты Mule Maven внезапно генерируют исключение ClassNotFoundException
Внезапно все мои проекты Mule Maven выдают эту ошибку при запуске mvn clean test:
java.lang.NoClassDefFoundError: org / apache / commons / cli / ParseException в org.mule.tck.junit4.AbstractMuleTestCase.(AbstractMuleTestCase.java:71)
Я могу добавить зависимость для этого, но на самом деле я не должен этого делать.
Ничто не изменилось в моем коде. Я использую Mule 3.4
4 ответа
Тебе нужно commons-cli.jar
в вашем classpath, добавьте эту зависимость Maven к вашему pom
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.1</version>
</dependency>
Обновление: код ОП был исправлен после добавления commons-cli 1.1
зависимость.
Описание проблемы и как ее исправить: http://ricston.com/blog/mule-classnotfoundexception-tests-commons-cli/
В двух словах, у вас, вероятно, неправильный JAR-файл с именем commons-cli-1.2. Удалите это и перезапустите сборку Maven. Тебе должно быть хорошо после этого.
Если зависимость от follogin доступна в POM. это должно работать нормально.
<dependency>
<groupId>org.mule.tests</groupId>
<artifactId>mule-tests-functional</artifactId>
<version>3.4.0</version>
<scope>test</scope>
</dependency>
Затем используйте mvn clean compile для обновления зависимости.
mvn eclipse:clean eclipse:eclipse clean compile
Надеюсь это поможет.
Поведение Maven не воспроизводится при каждом запуске: кроме общих проблем с сетью и проблем с повреждением хранилища, все может обновляться автоматически в любое время, нарушая любой шаг выполнения, даже если вы не изменили ни один из ваших файлов,
Ваше сообщение об ошибке, касающееся класса в некоторой библиотеке Apache Commons, указывает на разногласие между версией этой библиотеки, которую должен использовать Mule (та, которая имеет класс ParseException), и версией библиотеки, которую он фактически загружает (без класса и вызывает исключение).
Возможные сценарии несоответствия версий включают в себя обновление новой версии Mule с ошибками (возможно, только неправильной или поврежденной POM), которая указывает несовместимую версию библиотеки, или случайное обновление или понижение последней версии библиотеки в вашем хранилище вследствие добавления или обновление чего-то, не связанного с Мулом.
Анализ предложений:
- Какие плагины в вашем репозитории Maven имеют версию снимка? Какие из этих снимков были обновлены в момент появления ошибки?
- Какие библиотеки jar и какие версии включают класс ParseException? Что зависит от конкретных версий или от последних версий этих банок?