Помилка компілятора "Архів необхідної бібліотеки неможливо прочитати" - Spring Tool Suite


75

Я починаю налаштовувати своє середовище розробки, і я використовую Spring Tool Suite 2.8.1 разом з m2E 1.01.

Наскільки я можу зрозуміти, оскільки це проект Maven (мій перший), мій Maven POM диктує (разом із m2E smart) конфігурацію збірки мого проекту та залежності.

Я хотів би знати, чому моя IDE відображає проблеми з побудовою Java, які читають "Архів, необхідний для бібліотечної бібліотеки / шляху / somejar.jar, неможливо прочитати або не є дійсним ZIP-файлом", коли я бачу банки у своєму .m2 сховище?

Усі помилки, що стосуються спільного журналювання: 1.1.1, які я виключив у своєму батьківському пам’яті. Це була транзитивна залежність за допомогою spring-context-support: 3.0.5. Я виключив цю бібліотеку зі своєї збірки, і тепер помилки стосуються бібліотеки spring-context-support.

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

Маркери


Вам потрібно виконати installціль для maven: шукайте контекстне меню для m2e. Це призведе до всіх пропущених залежностей.
dma_k

2
Дякую dma_k, я спробував це, але безрезультатно. Банка знаходиться в моєму сховищі .m2 ... я просто не знаю, чому її не читають ...
totalcruise

Якщо є файли jar, спробуйте оновити свій проект. Зазвичай це допомагає.
dma_k

Гаразд, це допомогло - інші помилки зараз - але це допомогло. Дякую
totalcruise

Відповіді:


91

Справді IDE часто кешують локальний репозиторій (Eclipse робить щось подібне, і мені доводиться перезапускати Eclipse).

Однією потворною поведінкою maven, з якою ви можете зіткнутися, є те, що якщо ви оголосите залежність перед тим, як фактично встановити її, maven створить порожню версію відсутньої залежності (папка з метаданими, але не jar), і вам доведеться вручну очистити сховище .m2 .

По-третє, встановлений архів (jar ...) може бути пошкоджений, тому спробуйте відкрити його за допомогою будь-якого інструменту архівування (7zip ...), щоб перевірити його, і видаліть всю папку, якщо архів пошкоджений.


14
Просто перезапуск Eclipse працював у мене після додавання існуючого проекту до нового репозиторію Git. Спасибі +1
pjco

9
Здається, це відома помилка з Геліосом (не впевнений, чи існує вона з Юноною). bugs.eclipse.org/bugs/show_bug.cgi?id=375249 . Просто видалення проекту (не вмісту) та імпорт існуючого проекту назад у робочу область може виправити це, коли jar дійсний.
dfdumaresq

3
Перезапуск Eclipse у мене не працює, видалення / імпорт працює
Олексій

10
Очищення каталогу вручну, здавалося, працювало для мене. Просто rm -rf ~/.m2/repository/<path of dependency>(linux / mac) - це все, що, здається, потрібно.
Пол Ріхтер,

17

У моєму випадку мені довелося вручну видалити всі файли в .m2\repositoryпапці, а потім відкрити командний рядок і запустити mvn -installкоманду в каталозі мого проекту.


на ubuntu mvn -installкаже, що це не допустима команда, я просто видалив усі файли .m2\repositoryта оновив проект maven з IDE (STS) за допомогою alt + f5, а потім поставте прапорець біля пункту "Примусове оновлення знімків / випусків", а потім гаразд ... вирішив мою проблему ..
ДЯКУЮ

9

Я використовував Eclipse як IDE, і я отримував ту саму помилку. Мені довелося зробити Project-> Maven-> Update Project. Установіть усі прапорці нижче, окрім "офлайн". один "Примусове оновлення знімків / випусків" і натисніть OK. Знову зробив чисту збірку для проекту.


5

Видаліть пошкоджені файли з локального сховища .m2 та Ctrl+ F5(оновіть проект Maven) у Eclipse / STS. Він завантажить та встановить ці файли.


Я думаю, що його ALT + F5
Бала,

4

Це спрацювало для мене.

  1. Закрийте Eclipse
  2. Видалити ./m2/repository
  3. Відкрийте Eclipse, він автоматично завантажить всі банки
  4. Якщо проблема все ще залишається, клацніть правою кнопкою миші проект> Maven> Оновити проект ...> Позначте «Примусове оновлення знімків / випусків»

2

Для працівників Google:

У моєму випадку я випадково вручну додав клас Java до шляху збірки, коли тикався навколо Eclipse. Подивившись на "Налаштування шляху побудови ...> Бібліотеки, я видалив клас винуватця і тепер маю лише

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

і нічого не скаржиться.


У мене була проблема, подібна до цієї, коли додавання application.properties до вихідної папки спричинило її додавання як бібліотеку додатків у eclipse Oxygen. Він створював Архів помилок для необхідної бібліотеки: 'src / main / resources / application.properties' у проекті неможливо прочитати або не є дійсним ZIP, і видалення цієї залежності із шляху збірки вирішило проблему.
JE Carter II

2

Нижче Кроки вирішили мою проблему.

  1. Перейдіть до папки ./m2/repository.

  2. Перейдіть до відповідної папки з помилками архіву.

  3. Переконайтесь, що існує будь-який zip-файл.

  4. видалити папку імені помилки -.

  5. Тепер перейдіть до проекту Eclipse - Клацніть правою кнопкою миші - Maven -> Оновити проект.

Вище трюк працює для мене.


1

У моєму випадку я спробував усі поради, але помилка залишилася. Я вирішив зміни з більш пізньою версією і написав це в pom.xml. Після цього зараз все нормально.


1

Я видалив локальне сховище maven. Потім просто клацніть правою кнопкою миші проект -> Maven -> Оновити проект ... Виберіть усі відповідні проекти та натисніть OK.


1

Я стикався з тією ж проблемою зі своїм проектом.

Мій проект не зміг знайти цей архів: -

C:\Users\rakeshnarang\.m2\repository\org\hibernate\hibernate-core\5.3.7.Final

Я зайшов у цей каталог і видалив цю папку.

Повернувся до затемнення та натиснув ALT + F5, щоб оновити проект.

Файл jar було завантажено знову, і проблема вирішена.

Ви повинні спробувати це.



0

Я зіткнувся з цією проблемою. У мене був "Архів для необхідної бібліотеки spring-boot-devtools неможливо прочитати або це не дійсний ZIP-файл", і рішення було таким: - 1- визначити імена залежностей, які мають проблеми (можливо, це spring-boot- devtools). 2- близьке затемнення. 3- пошук у вашому .m2 файлі за цими залежностями (за назвою). 4- видалити ці папки. 5 - знову відкрийте затемнення і дозвольте Maven відновити ваші залежності знову.


0

Гаразд, у мене була та ж проблема зі STS на Mac і вирішив її, видаливши всі файли в папці сховища, і з IDE STS натисніть на проект, а потім Maven -> Оновити проект. Дайте пару хвилин, щоб завантажити всі залежності, і проблема вирішена.


0

Я стикаюся з тим самим питанням. Я видалив локальне сховище та перезапустив ідентифікатор. Це спрацювало нормально.


0

Щойно виникла ця проблема на Indigo SR2. Він з’явився після того, як я видалив зайву банку зі шляху до класу (шлях до збірки). Перезапуск Eclipse не допоміг. Додано назад jar до шляху збірки ... помилка зникла. Ще раз вийняв банку, і цього разу мене врятували від чергової скарги.


0

жодне з наведених вище рішень не допомогло моїй проблемі. Я вирішив це, видаливши всі файли в папці {projectworkspace} /. Метаданих І в папці {location} /. M2 і дозволив eclipse знову завантажувати кожну річ. Сподіваюся, це комусь допомагає, ура!


0

Коли я отримав повідомлення про помилку "неможливо прочитати архів для потрібної бібліотеки", я вирішив це, видаливши відповідний JARS зі шляху побудови проекту, а потім використовуючи "Додати зовнішні банки", щоб знову додати їх назад (навігація в ту саму папку, в якій вони були). Використання кнопки «Додати банки» не спрацювало б, і помилка все одно існувала б. Але використання "Додати зовнішні банки" спрацювало.


0

Це могло бути пов’язано з тим, що ви додали файл spring-licence.txt до бібліотек веб-програм.

У мене була подібна проблема та її вирішення після видалення цього текстового файлу. У бібліотеках він очікує лише файл jar.


0

Крім того, наведені нижче команди також працювали для мене:

mvn -s settings.xml eclipse:clean
mvn -s settings.xml eclipse:eclipse

0

У випадку з VSCode виконайте такі дії:

  1. Перейдіть до відповідної папки, що містить пошкоджену банку
  2. Видаліть лише банку
  3. mvn чистий
  4. mvn компіляція

Це спрацювало для мене.


0

Прочитайте проблему в розділі Проблеми, визначте, яку залежність неможливо прочитати, потім перейдіть до сховища maven .m2 \ repository -> 1) перевірте залежності та видаліть його з папки 2) перейдіть до STS / Eclipse -> натисніть на maven - > оновити проект -> вибрати примусове оновлення знімків / випусків та натиснути на ok.

або видаліть залежності зі сховища .m2 / і відновіть maven -> оновіть проект maven


0

Це трапляється, коли Eclipse викручується. Щоб виправити це, видаліть усі файли в:

workspace/.metadata/.plugins/org.eclipse.jdt.core

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.