Ошибка компилятора "архив для требуемой библиотеки не может быть прочитан" - Spring Tool Suite
Я начинаю настраивать свою среду разработки, и я использую Spring Tool Suite 2.8.1 вместе с m2E 1.01.
насколько я могу судить, поскольку это проект Maven (мой первый), мой Maven POM диктует (вместе с m2e smarts) мою конфигурацию сборки проекта и зависимости.
Я хотел бы знать, почему моя IDE отображает проблемы сборки Java, которые читают "архив, необходимый для библиотеки библиотека/путь/somejar.банку не может быть прочитан или не является допустимым zip-файлом", когда я могу видеть банки в моем .репозиторий м2?
все ошибки, относящиеся к commons-logging:1.1.1, которые я исключил в своем родителе-pom. Это была транзистивная зависимость через spring-context-support: 3.0.5. Я исключил эту библиотеку из своей сборки, и теперь ошибки относятся к библиотеке spring-context-support..
Я приложил скриншот для иллюстрации.
большое спасибо
15 ответов:
действительно IDE часто кэшируют локальный репозиторий (Eclipse делает что-то подобное, и мне нужно перезапустить Eclipse).
одно уродливое поведение maven, с которым вы можете столкнуться, заключается в том, что если вы объявите зависимость перед ее фактической установкой, maven создаст пустую версию отсутствующей зависимости (папка с метаданными, но без jar), и вам придется вручную очистить ее .хранилище м2.
В-третьих, установленный архив (jar...) может быть поврежден, поэтому попробуйте открыть его с помощью любой архивный инструмент (7zip...), чтобы проверить его, и удалить всю папку, если архив поврежден.
в моем случае мне пришлось вручную удалить все файлы , а затем откройте командную строку и выполните команду в моем каталоге проекта.
Я использовал Eclipse в качестве IDE, и я получал очень ту же ошибку. Я должен был сделать проект - >Maven - > обновить проект. Установите все флажки ниже, кроме "offline" esp. один "принудительное обновление снимков / выпусков" и нажмите кнопку ОК. Сделал чистую сборку для проекта снова.
удалить поврежденные файлы с локального .репозиторий м2 и Ctrl+F5 (обновить проект Maven) в Eclipse/STS. Он будет загружать и устанавливать эти файлы.
Для Гуглеров:
в моем случае я случайно вручную добавлен класс Java в путь сборки в то время как ковыряться затмение. Взглянув на " настроить путь сборки...> Библиотеки я удалил класс culprit и теперь есть только
- системная библиотека JRE
- Зависимостей Maven
и ничего не жалуюсь.
Это работает для меня.
- Закройте Eclipse
- удалить ./m2 / repository
- откройте Eclipse, он автоматически загрузит все банки
- Если проблема все еще остается, щелкните правой кнопкой мыши проект > Maven > обновить проект... > Проверьте "принудительное обновление снимков / релизов"
в моем случае я пробовал все предложенные советы, но ошибка осталась. Я решил изменить с более поздней версией и написать это в pom.XML. После этого все нормально.
Я удалил локальный репозиторий maven. Затем просто щелкните правой кнопкой мыши проект - > Maven - > обновить проект... Выберите все соответствующие проекты и нажмите кнопку ОК.
Это может быть связано с тем, что вы добавили spring-licence.txt-файл для библиотек веб-приложений.
У меня была аналогичная проблема и решена после удаления текстового файла. в библиотеках он будет ожидать только jar-файл.
спасибо, Змееголовы.
Я столкнулся с этой проблемой. У меня был "архив для требуемой библиотеки spring-boot-devtools не может быть прочитан или не является допустимым ZIP-файлом", и решение было таким:- 1-Определите имена зависимостей, которые имеют проблемы (для майского случая это spring-boot-devtools). 2 - Закройте Eclipse. 3 - поиск по вашему .m2 файл по этим зависимостям (по имени). 4 - удалить эти папки. 5-снова откройте eclipse и пусть maven снова перестроит ваши зависимости.
Ок, у меня была та же проблема с STS на mac и решил ее, удалив все файлы в папке репозитория и из IDE STS нажмите на проект, а затем Maven -> обновить проект. Дайте ему пару минут, чтобы загрузить все зависимости и проблема решена.
Я сталкиваюсь с той же проблемой. Я удалил локальный репозиторий и перезапустил идентификатор. Это сработало отлично .