#java #eclipse #dependency-management #m2eclipse
#Ява #затмение #управление зависимостями #m2eclipse
Вопрос:
Я столкнулся с проблемой в Eclipse во время выполнения некоторых тестов JUnit. Я получаю конфликт jar, потому что загружаются две версии библиотеки ( commons-compress
Apache), в то время как должна загружаться только одна. Когда я смотрю в иерархию зависимостей, там говорится, что должна быть разрешена только версия jar 1.18, а остальные опущены из-за конфликта с 1.18, как вы можете видеть здесь :
Поэтому в моем тесте JUnit я добавил следующие строки для вывода того, что является загруженной фактической банкой, и действительно, загружены две разные банки, 1.18 и 1.3, что привело к конфликту…
final ClassLoader classloader = ClassLoader.getSystemClassLoader(); final URL[] urls = ((URLClassLoader) classloader).getURLs(); for (final URL url : urls) { if (url.getFile().contains("commons-compress")) { System.out.println(url.getFile()); } }
Выход :
/C:/Users/flbougue/.m2/repository/org/apache/commons/commons-compress/1.3/commons-compress-1.3.jar /C:/Users/flbougue/.m2/repository/org/apache/commons/commons-compress/1.18/commons-compress-1.18.jar
У меня заканчиваются идеи, так как мои коллеги не сталкиваются с этой проблемой, и я попытался понизить свою версию плагина m2e, чтобы она соответствовала их, и это все еще не работает. Однако я думаю, что это, должно быть, проблема, связанная с m2e, так как тест проходит с использованием maven (тест mvn …).