Ошибка компилятора «Не удалось прочитать архив для необходимой библиотеки» - Spring Tool Suite - PullRequest
72 голосов
/ 14 января 2012

Я начинаю настраивать свою среду разработки и использую Spring Tool Suite 2.8.1 вместе с m2E 1.01.

Насколько я могу судить, поскольку это проект Maven (мой первый), мой POM Maven диктует (наряду с smarts m2E) конфигурацию и зависимости сборки моего проекта.

Я хотел бы знать, почему в моей среде IDE отображаются проблемы сборки Java, в которых указано «Архив, необходимый для библиотеки library / path / somejar.jar не может быть прочитан или не является допустимым файлом zip» Я вижу банки в моем хранилище .m2?

Все ошибки, относящиеся к регистрации общего пользования: 1.1.1, которые я исключил из списка моих родителей. Это была транзитивная зависимость с помощью Spring-context-support: 3.0.5. Я исключил эту библиотеку из моей сборки, и теперь ошибки относятся к библиотеке поддержки весеннего контекста.

Я приложил скриншот для иллюстрации.

Markers

Ответы [ 18 ]

86 голосов
/ 12 апреля 2012

Действительно, IDE часто кэшируют локальный репозиторий (Eclipse делает нечто подобное, и я должен перезапустить Eclipse).

Уродливое поведение maven, с которым вы можете столкнуться, состоит в том, что если вы объявите зависимость до ее фактической установки, maven создаст пустую версию отсутствующей зависимости (папка с метаданными, но без jar), и вам придется вручную очистить .m2 хранилище.

В-третьих, установленный архив (jar ...) может быть поврежден, поэтому попробуйте открыть его любым архивным инструментом (7zip ...), чтобы проверить его, и удалите всю папку, если архив поврежден.

16 голосов
/ 22 апреля 2014

В моем случае мне пришлось вручную удалить все файлы в папке .m2\repository, а затем открыть командную строку и запустить команду mvn -install в каталоге моего проекта.

10 голосов
/ 06 ноября 2014

Я использовал Eclipse в качестве IDE и получал ту же ошибку. Я должен был сделать Project-> Maven-> Обновить проект. Установите все флажки ниже, кроме «офлайн» esp. один «Принудительное обновление снимков / выпусков» и нажмите OK. Сделал Чистую Постройку для Проекта снова.

5 голосов
/ 06 мая 2017

Удалите поврежденные файлы из вашего локального хранилища .m2 и Ctrl + F5 (Обновить Maven Project) в Eclipse / STS.Он загрузит и установит эти файлы.

3 голосов
/ 25 августа 2018

Это сработало для меня.

  1. Закрыть затмение
  2. Удалить ./m2/repository
  3. Откройте Eclipse, он автоматически загрузит все банки
  4. Если проблема остается, щелкните правой кнопкой мыши проект> Maven> Обновить проект ...> Установите флажок «Принудительное обновление снимков / выпусков»
2 голосов
/ 30 июля 2015

Для гуглеров:

В моем случае я случайно вручную добавил класс Java в путь компоновки во время обхода Eclipse. Взглянув на «Настроить путь сборки ...> Библиотеки», я удалил класс преступника, и теперь у него есть только

  • Системная библиотека JRE
  • Зависимости Maven

и ничто не жалуется.

2 голосов
/ 21 ноября 2018

Ниже описаны мои проблемы.

  1. Перейдите в папку ./m2/repository.

  2. Перейти в соответствующую папку с ошибкой архива.

  3. Убедитесь, что любой zip-файл существует.

  4. удалить папку с именем ошибки.

  5. Теперь перейдите к проекту Eclipse - щелкните правой кнопкой мыши - Maven -> Обновить проект.

Вышеупомянутая уловка работает для меня.

1 голос
/ 03 ноября 2016

Я удалил локальный репозиторий maven. Затем просто щелкните правой кнопкой мыши проект -> Maven -> Обновить проект ... Выберите все соответствующие проекты и нажмите ОК.

1 голос
/ 08 июня 2014

В моем случае я попробовал все предложенные советы, но ошибка осталась.Я решил изменить с более новой версией и записать это в pom.xml.После этого все в порядке.

0 голосов
/ 26 октября 2018

Когда я получил сообщение о том, что «архив для необходимой библиотеки не может быть прочитан», я решил ее, удалив соответствующие JARS из пути сборки проекта, а затем с помощью «Добавить внешние файлы JAR» добавил их обратно в снова (переход к той же папке, в которой они находились). Использование кнопки «Добавить банки» не сработает, и ошибка все равно будет. Но использование «Добавить внешние банки» сработало.

...