Пакет Maven працює, але збірка Intellij не вдається


91

У мене є проект JDK 1.7 із залежністю maven від локальної банки у моєму репозиторії maven.

Я не можу побудувати проект за допомогою Intellij, з помилками, що символ не може бути знайдений (символ є класом, що імпортує пакети з локальної банки)

Але я можу успішно побудувати проект, використовуючи "пакет mvn".

Я витратив стільки часу, шукаючи рішення, речі, які я вже зробив:

  • Недійсна кеш-пам’ять
  • 'mvn clean install' локальна залежність jar
  • Позначено як "автозавантажити знімки" в конфігурації Intellij maven
  • Знову імпонований maven в Intellij
  • Синхронізований

Ця помилка траплялася у мене кілька разів раніше, але зазвичай просто закриття Intellij та / або виконання `` чистого встановлення mvn '' робило трюк.

Будь ласка, допоможіть.


1
Чи правильно налаштовано ваше сховище maven за допомогою IntelliJ?
Ruchira Gayan Ranaweera

так, шлях до сховища - той, який оновлюється, коли я використовую 'mvn install'
Ярін Міран,

3
Місцева банка - це знімок або випущена версія jar? Якщо jar є знімком, ви повинні встановити позначку «Завжди оновлювати знімки» у налаштуваннях intellij Maven, щоб примусити оновити ідею.
F. Geraerts

так, це знімок, я вже позначив цей варіант. Але все одно нічого не змінюється :(
Ярін Міран,

1
У частині налаштувань компілятора встановлено прапорець "використовувати зовнішню збірку"? А у пункті Використовувати зовнішню збірку також встановлено прапорець "Відновити модуль при зміні залежностей"?
F. Geraerts

Відповіді:


155

Я знаю, що це пізно, але виконання mvn idea:ideaвирішує проблему.


3
Це має бути прийнятою відповіддю, оскільки вона пропонує фактичне рішення, а не лише причину, через яку це не вдається. Усі мої оновлення!
Варкст,

4
mvn idea:ideaне оновлювався і не підтримується jetbrains
Шон

2
Після цього мені довелося повторно запустити установку mvn
Фабіо Ф.

1
Після цього просто відновіть проект. Дякую.
Duc Tran

2
Ти врятував мене від відчаю. Я хотів би вас поцілувати
Мартін Бамфорд,

29

Спробуйте видалити весь файл .iml та ваш POM. Потім скопіюйте та вставте свій POM ще раз у свій проект, знову відкрийте та повторно імпортуйте його.


13
Можливо, просто спробуйте «повторно імпортувати все» у поданні проекту Maven, перш ніж щось видаляти
Zveratko 11.03.15

3
Мені теж довелося видалити .iml, повторне імпортування maven не виправило.
Даніель де Зван

1
@masoodg, велике спасибі! ти врятував мій день! Просто повторне імпортування не допомогло. Дотримуйтесь ваших вказівок, і це працює як шарм.
табалін

Закриття IntelliJ, видалення *.iml, *.iprі *.iwsфайли з кореневої директорії проекту, при повторному відкритті IntelliJ встановив її для мене
theferrit32

16

Я з’ясував, що мій файл .iml і pom були суперечливими та спричиняли проблему.


1
У мене схожа проблема. У мене є конфігурація з плагіном дати збірки. Для цього плагіна потрібна властивість buildDate із значенням "$ {maven.build.timestamp}". IntelliJ має проблему з синтаксичним розбором цього файлу pom, і файл iml не синхронізований належним чином з pom. Коли я коментую властивість buildDate, синхронізація працює нормально.
chalimartines

9
будь-які поради щодо того, як це виправити? Я просто хотів би, щоб Intellij працював, здається, Netbeans запускає будь-який проект, незважаючи ні на що ... це повний руйнівник продуктивності :( ...
Брено Сальгадо,

1
Я не знаю, чи було ваше виправлення однаковим, але мені довелося залишити проект і перезавантажити проект, щоб змусити IntelliJ оновити свій файл IML (він не оновив його з pom.xml, оскільки я додав деякі нові залежності)
SonarJetLens

1
"Як" набагато корисніше, ніж "чому". Будь ласка, додайте детальну інформацію про те, як ви вирішили цю проблему.
João Matos

2
Я закрив IntelliJ. Потім я видалив C:\Users\USERNAME\.IntelliJIdea2017.2\system. Потім я зробив git clean -xdfу вихідному каталозі, щоб видалити всі неверсійні файли, і знову імпортував проект. Зараз працює як шарм.
koppor

15

Додавши ще кілька порад, оскільки це перше, що з’явилося в пошуку, коли у мене були подібні проблеми (збірки проекту в mvn, а не в IntelliJ), на випадок, якщо це може допомогти комусь іншому.

Коли у мене це було, це було інше виправлення для Windows та Mac.

На Mac я перейшов до ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory і встановив його для використання мого окремо встановленого Maven, а не в комплекті Maven. Усі проблеми зі збіркою зникли.

У Windows я бачив винятки в idea.log, пов’язані з SSL, і в моєму дереві проектів була лише Java під гілкою Зовнішні бібліотеки. З огляду на інші сайти здається, що IntelliJ використовує власний приватний JDK замість системного (хоча в моєму випадку у мене вже була встановлена ​​така сама версія JDK). У моїй системі JDK у сховищі ключів для корпоративного сервера Nexus встановлено сертифікати, яких у приватного JDK IntelliJ не було, тому виникали винятки, коли він намагався отримати файли з Nexus. Для цього рішенням було вийти з IntelliJ, встановити змінну середовища під назвою IDEA_JDK, щоб вказати на JDK, який я вже встановив, який мав належні сертифікати, і перезапустити IntelliJ. Усі проблеми зі збіркою зникли.


та сама проблема в Linux з останньою версією IntelliJ 2016.3.5 - спочатку вона спрацювала, потім після деяких змін POM отримала не синхронізацію, і допомогло лише переключення Maven impl, тому може бути також, що просто перемикання Maven викликає оновлення в IntelliJ, що викликає проект знову синхронізується ...
Грегор


5

IDE використовує власну пакетну копію Maven під час створення збірок. Якщо maven на терміналі відрізняється від IDE, ви хочете, щоб вони були однаковими.

GOTO (на Mac) - Ідея IntelliJ -> Налаштування -> Збірка, виконання, розгортання -> Інструменти побудови -> Maven. Встановіть шлях до домашнього каталогу Maven. Щоб знайти шлях до Maven, який ви використовуєте з терміналу, введіть команду, mvn -versionяка повинна роздрукувати купу деталей, включаючи шлях до каталогу. Помістіть це в домашній каталог Maven .

Щоб бути в безпеці, ви можете зробити те ж саме для розташування JDK

==== Деякі інші речі, які можуть спричинити такі проблеми ===

Якщо ви робите пакунки mvn або збирання mvn clean install, то це має щось робити з кешами IDE. Крім усього іншого, цей зазвичай допомагає при таких помилках ->

Файл -> Недійсні кеші


4

Я знаю, що я запізнився з цією розмовою, але просто хотів опублікувати це на випадок, якщо хтось інший зіткнеться з цією проблемою. Інша причина, чому це трапляється, полягає в тому, що ви не посилаєтесь на правильний репозиторій. Intellij за замовчуванням вибирає пакетну версію jar, а не версію вашого власного сховища maven. Переконайтеся, що підключене сховище є правильним.


Якщо ви встановили maven за допомогою домашньої мови, правильно встановивши домашній каталог maven (наприклад) /usr/local/Cellar/maven/3.5.4/libexec вирішує цю проблему
sushilshimpi

3

У моєму випадку мій iml не синхронізувався, тому я видалив iml для конкретного модуля, а потім за опцією maven виберіть ungnore project для відтворення iml


3

з командного рядка виконайте комнаду: mvn idea:ideaі клацніть правою кнопкою миші на проекті -> з меню повторно імпортуйте залежності


1

"символ неможливо знайти" означає, що intellij не здатний вирішити "залежність". Отже, ви можете примусити "Аналіз залежностей", натиснувши "Аналіз" -> "Аналіз залежностей", потім вибрати "Обсяг аналізу"


1

Багато цінних порад в інших відповідях тут, просто хочу додати рішення, яке працювало для моєї проблеми .

Нещодавно ми почали використовувати приватне сховище Maven, і завжди це робимо, mvn -s settings.xmlколи викликаємо cmdline Maven. IntelliJ, звичайно, не знає про приватне репо, тому йому потрібна невелика допомога.

Перейдіть до Налаштування -> Збірка, Виконання, Розгортання -> Інструменти побудови -> Maven та перевизначте параметр "Файл налаштувань користувача".

введіть тут опис зображення


1

У мене була та сама проблема. Йти до:

Файл -> Структура проекту -> Модуль . Виберіть свій модуль і на вкладці " Залежності " переконайтеся, що додано всі залежності maven.

Щоб переконатися, що вас попереджають про подібну проблему в редакторі ідей: перейдіть з "вкладки Залежності" на "Джерела" і додайте позначку src як джерела.


0

У мене була та сама проблема. Я змінив версію maven з 3.0.5 на 3.0.4 у налаштуваннях Idea, і зараз все працює нормально. Не знаю, чому це мені допомагає.


0

Я спробував скасувати кеш, змінивши Maven на встановлену версію, і нічого не вийшло.

Закриття та відтворення нового проекту його вирішили.


0

Я закрив проект і знову імпортував його, натиснувши на кореневу пам (не просто папку, а сам файл pom).


0

Я спробував усе вище без жодної радості. Однак я зробив одну річ, яка нарешті привела до роботи:

Я зайшов у C: \ Users \ .IntellijJIdea2018.2 і просто видалив всю папку.

Він видаляє всі налаштування та кеш для IntelliJ. Мені довелося повторно імпортувати свій проект з нуля, але просте видалення та повторне імпортування раніше не працювало, але це нарешті змусило його працювати знову.


0

Якщо ви використовуєте gradle, спробуйте нижче за командою, це вирішило мою проблему

gradle cleanIdea idea


0

Ця проста процедура займає близько 1 хвилини без будь-якого ризику.

  • Закрийте IntelliJ
  • Видалити ТІЛЬКИ певні файли IntelliJ, такі як .idea / *, * .iml, .settings тощо. Запропонованим способом було також видалення POM, але це не потрібно IMHO.
  • Потім заново створіть проект в IntelliJ, використовуючи: Файл > Створити> Проект із існуючих джерел> виконайте кроки. Майте на увазі, що НЕ потрібно імпортувати кілька профілів або (однакові проекти).

0

Видаліть папку .idea та закрийте IDE

знову відкрийте IDE та імпортуйте проект, який виконає новий імпорт, оскільки папку .IDEA ми видалили раніше

Перевірте модуль зовнішніх бібліотек, і якщо він не заповнений необхідними залежностями, то перевірте, чи правильно вказано розташування maven settings.xml в IDE


0

Існує також така можливість, про яку не згадувалося. Якщо ви імпортуєте бібліотеку зcom.sun.* . Це також спричинить цю проблему.

Програми працюють під час запуску в ide, оскільки ці класи в com.sun.*всі знаходяться в jre/libкаталозі, він буде завантажений під час запуску. Але під час запуску mvn packageці бібліотеки не будуть доступні через обмеження Oracle, оскільки з версії Java 1.6 (ці бібліотеки застаріли певним чином). Щоб вирішити цю проблему, ви можете додати

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

не забудьте замінити cootclasspath на ваш власний шлях rt.jar

Ви можете шукати Access restriction: The type XXX is not accessible due to restriction on required libraryбільше деталей.


0

Якщо є помилкові налаштовані модулі, виконайте такі дії:

  • Зайдіть в Налаштування проекту
  • Перейдіть до Модулі
  • Видаліть модулі, яких там не повинно бути

0
  1. На вкладці maven натисніть + і виберіть pom.xml
  2. На вкладці maven натисніть кнопку завантажити джерела та документацію
  3. На структурі проекту (де ви можете переглядати файли / каталоги проекту) клацніть правою кнопкою миші проект, який ви намагаєтеся створити, та виберіть Ім'я проекту модуля побудови.
  4. На вкладці Виконати - Редагувати конфігурації за допомогою + додати програму та заповніть наступні поля: i. Основний клас - Виберіть вручну на вкладці Проект основний клас ii. Використовуйте шлях до класу модуля - виберіть назву програми iii. Скоротити командний рядок - файл шляху до класу
  5. Тепер просто запустіть програму.

0

У моєму випадку проблема полягала в іншій версії Project Java SDK. Коли я будував проект з терміналу, maven використовував Java 8, а коли я будував з IDEA, він використовував Java 11.

Перейдіть у меню Файл> Структура проекту ... і в налаштуваннях проекту встановіть потрібну версію Project SDK.


0

Для мене проблема полягала в тому, що я вибрав компілятор Ajc у налаштуваннях IntelliJ Java Compiler . Як тільки я змінив його на Javac, все працювало нормально.


0

Для мене на Mac я вирішив це, видаливши додаток Intellij Idea App з мого комп’ютера та видаливши файли кешу в ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Потім переінсталюйте його, відкрийте мій проект і складіть його успішно!


0

Я зіткнувся з тією ж проблемою. Я можу успішно запустити mvn clean packageкоманду в терміналі, але не можу запустити або побудувати з IntellJ. Я зробив наступні дії, але всі вони зазнали невдачі.

  • Недійсна кеш-пам’ять
  • запустити mvn clean packageабо mvn clean packageв терміналі
  • Позначено як "автозавантажити знімки" в конфігурації Intellij maven
  • Синхронізувати або повторно імпортувати
  • Видаліть усі пов'язані з IntellJ файли, такі як .idea, та повторно імпортуйте проект
  • видаліть усі файли залежностей, а потім запустіть mvn clean package
  • Переключіть версію Java або використовуйте вбудовану Java в IntellJ
  • бігти mvn idea:idea
  • Змінити будинок Maven
  • позначте каталог src як джерело на вкладці модуля

Останнє, що я зробив: Видаліть .idea та .iml у проекті, видаліть усі файли залежностей, а потім видаліть IntellJ з комп’ютера. Після перевстановлення IntellJ мій проект був побудований успішно. Я хотів би мати кращий спосіб вирішити це.

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