Пакет Maven работает, но сборка Intellij не удалась

У меня есть проект JDK 1.7 с зависимостью maven от локального фляги в моем репозитории maven.

Я не могу построить проект, используя Intellij, с ошибками, которые не удается найти символ (символ является классом, импортирующим пакеты из локального фляги)

Но я могу успешно построить проект, используя "пакет mvn".

Я провел так много времени в поисках решений, вещей, которые я уже сделал:

  • Недействительный кеш
  • 'mvn clean install' локальная зависимость jar
  • Помечен для "автозагрузки снимков" в конфигурации maven Intellij
  • Переоборудованный Maven в Intellij
  • Syncornized

Эта ошибка случалась с мной пару раз раньше, но обычно просто закрывали Intellij и / или выполняли 'mvn clean install'.

Пожалуйста помоги.

32 ответа

Решение

Я обнаружил, что мой файл.iml и pom конфликтовали и вызывали проблему.

Я знаю, что уже поздно, но выполняется mvn idea:idea решает проблему.

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

Maven ReImport работал для меня, как показано ниже...

Добавлю еще несколько советов, так как это первое, что появилось в поиске, когда у меня возникли подобные проблемы (сборка проекта в mvn, а не в IntelliJ), на случай, если это может помочь кому-то еще.

Когда у меня было это, это было другое исправление на Windows и Mac.

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

В Windows я видел исключения в idea.log, относящиеся к SSL, и в моем дереве проекта была только Java под веткой External Libraries. Из других сайтов видно, что IntelliJ использует свой собственный JDK вместо системного (хотя в моем случае у меня уже была установлена ​​точно такая же версия JDK). В моей системной JDK установлены сертификаты в хранилище ключей для корпоративного сервера Nexus, которого у частного JDK IntelliJ не было, поэтому возникали исключения, когда он пытался получить файлы от Nexus. Для этого нужно было выйти из IntelliJ, установить переменную среды с именем IDEA_JDK, чтобы она указала на JDK, который я уже установил, с соответствующими сертификатами, и перезапустить IntelliJ. Все проблемы со сборкой ушли.

IDE использует собственную пакетную копию Maven при сборке. Если Maven на терминале отличается от IDE, то вы хотите, чтобы они были такими же.

GOTO (на Mac)- IntelliJ Idea -> Настройки -> Сборка, выполнение, развертывание -> Инструменты сборки -> Maven. Установите путь для вашего домашнего каталога Maven Чтобы найти путь для Maven, который вы используете из терминала, введите команду mvn -version и это должно распечатать кучу деталей, включая путь к каталогу. Поместите это в Maven Home Directory.

Чтобы быть в безопасности, вы можете сделать то же самое для местоположения JDK

==== Некоторые другие вещи, которые могут вызвать такие проблемы ===

Если вы выполняете сборку mvn package или mvn clean install, то это должно что-то делать с кешами IDE. Среди прочего, этот обычно помогает с такими ошибками ->

Файл -> Неправильные кэши

Я знаю, что опоздал на этот разговор, но просто хотел опубликовать это на тот случай, если кто-то еще столкнется с этой проблемой. Другая причина, по которой это происходит, заключается в том, что вы не ссылаетесь на правильный репозиторий. Intellij по умолчанию берет пакетную версию jar-файла вместо той, которая есть в вашем собственном хранилище maven. Убедитесь, что подключенный репозиторий является правильным.

У меня была аналогичная проблема, когда нижеприведенные параметры не работали.

  1. invalidating cache and restartчерез меню Файл
  2. mvn idea:idea

Что решило проблему:

  1. Полностью закрыть IntelliJ
  2. С терминала выполнитьgit clean -xdfна репозиторий. Это удалит все сгенерированные классы и файлы idea/iml/ipr. Другие VCS должны иметь аналогичные макросы.
  3. Бегатьmvn clean package
  4. Откройте IntelliJ с помощьюidea .

Ключевым моментом здесь было закрыть intellij и выполнить эти шаги с терминала. Где-то IntelliJ все еще кэшировал старые файлы, если пытался изнутри IntelliJ. Это с версией IntelliJ IDEA 2021.3.2 (Ultimate Edition).

Из командной строки выполните команду commnad: mvn idea:idea и щелкните правой кнопкой мыши на проекте -> из меню повторно импортируйте зависимости

Эта простая процедура занимает около 1 минуты без риска.

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

В моем случае мой iml не был синхронизирован, поэтому я удалил iml для определенного модуля, а затем в опции maven выберите unignore project, чтобы воссоздать iml

У меня была аналогичная проблема, и я понял, что мои зависимости maven не обновлялись в intellij. Решение состояло в том, чтобы перезагрузить все проекты Maven в окне maven, что заставляет Intellij перезагружать зависимости maven.

Если вы используете gradle, попробуйте команду ниже. Это решило мою проблему

gradle cleanIdea idea

Для меня проблема заключалась в том, что в настройках IntelliJ Java Compiler у меня был выбран компилятор Ajc. Как только я вернул его на Javac, все заработало.

Многие ценные советы в других ответах здесь, просто хочу добавить решение, которое сработало для моей проблемы.

Недавно мы начали использовать частный репозиторий Maven и всегда делаем mvn -s settings.xml при вызове Maven cmdline. Конечно, IntelliJ не знает о частном репо, поэтому ему нужно немного помочь.

Перейдите в Настройки -> Построить, Выполнить, Развертывание -> Инструменты сборки -> Maven и переопределить опцию "Файл настроек пользователя".

У меня такая же проблема. Перейти к:

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

Чтобы убедиться, что вас предупреждают о подобной проблеме в редакторе идей: переключитесь с "Вкладки зависимостей" на "Источники" и добавьте отметку вашего источника в качестве источника.

"символ не может быть найден" означает, что intellij не может разрешить "зависимость". Таким образом, вы можете вызвать "Анализ зависимостей", нажав "Анализ" -> "Анализ зависимостей", а затем выбрать "Область анализа"

Если настроены ошибочные модули, они делают следующие шаги:

  • Перейдите в настройки проекта
  • Перейти к модулям
  • Удалите модули, которых там не должно быть

Такая проблема возникает, когда существует несоответствие между вашей системной конфигурацией JVM/Maven и конфигурацией JVM/Maven вашей IntelliJ IDE. Я столкнулся с подобной проблемой. Я успешно смог ром"mvn clean install"команда, но IntelliJ Build не работает.

Я также пробовал с"mvn idea:idea"команда, но это не сработало, потому что"idea"плагин больше не существует. Он был удален.

Наконец, я обнаружил несоответствие между моимMAVEN_HOMEpath и настройки maven по умолчанию для IntelliJ. Итак, моя проблема была исправлена ​​после исправления настроек maven по умолчанию для IntelliJ.

Вы можете найти настройки в следующем месте. Перейдите в «Файл» -> «Настройки» -> «Сборка, выполнение, развертывание» в вашей среде IntelliJ.

Убедитесь, что путь к «Файлу настроек пользователя» и «Локальному репозиторию» совпадает с путем к переменной среды «MAVEN_HOME» или «M2_HOME» .

У меня такая же проблема. Я изменил версию maven с 3.0.5 на 3.0.4 в настройках Idea, и теперь все работает нормально. Не знаю, почему это помогает мне.

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

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

Закрытие и воссоздание нового проекта решило его.

Удалите папку.idea и закройте IDE

снова откройте IDE и импортируйте проект, который выполнит новый импорт, потому что папка.IDEA была удалена нами ранее

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

Я попробовал все выше без радости. Однако я сделал одну вещь, которая наконец заставила его работать:

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

Удаляет все настройки и кеш для IntelliJ. Мне пришлось заново импортировать мой проект, но простое удаление и повторный импорт раньше не работали, но в конце концов он снова заработал.

Для меня в Mac я решил это, удалив приложение Intellij Idea со своего компьютера и удалив файлы кеша в ~/Library/Application Support/JetBrains/IntelliJIdea2020.1 ~/Library/Caches/JetBrains/IntelliJIdea2020.1

Затем переустановите его, откройте мой проект и успешно соберите его!

В моем случае проблема была в другой версии Project Java SDK. Когда я создавал проект с терминала, maven использовал Java 8, а когда я строил из IDEA, он использовал Java 11.

Перейдите в File > Project Structure... и в Project Settings установите Project SDK на нужную вам версию.

Я столкнулся с той же проблемой. Я могу успешно запуститьmvn clean packageв терминале, но не запускается или не создается из IntellJ. Я выполнил следующие действия, но все они потерпели неудачу.

  • Недействительный кеш
  • бегать mvn clean package или mvn clean package в терминале
  • Отмечено как автоматическая загрузка снимков в конфигурации Intellij maven
  • Синхронизировать или повторно импортировать
  • Удалите все файлы, связанные с IntellJ, такие как.idea, и повторно импортируйте проект.
  • удалите все файлы зависимостей, а затем запустите mvn clean package
  • Сменить версию Java или использовать встроенную Java в IntellJ
  • бегать mvn idea:idea
  • Изменить Maven Home
  • пометить каталог src как источник на вкладке модуля

Последнее, что я сделал, сработало: удалил.idea и.iml в проекте, удалил все файлы зависимостей, а затем удалил IntellJ с компьютера. После переустановки IntellJ мой проект был успешно построен. Хотел бы я найти лучший способ решить эту проблему.

  1. На вкладке maven нажмите + и выберите pom.xml
  2. На вкладке maven щелкните источники загрузки и документацию
  3. В структуре проекта (где вы можете просматривать файлы / каталоги проекта) щелкните правой кнопкой мыши проект, который вы пытаетесь построить, и выберите "Имя проекта модуля сборки".
  4. На вкладке Run- Edit Configurations with + add Application и заполните поля ниже: i. Основной класс - выберите вручную на вкладке "Проект" и выберите основной класс. Ii. Использовать путь к классам модуля - выбрать имя приложения iii. Сократить командную строку - файл пути к классам
  5. Теперь просто запустите приложение.

Кажется, это проблема с intellij при идентификации ваших maven jar из локальных. Перейдите в File- > Project Structure- > Librarys и проверьте, отображается ли какая-либо библиотека maven красным цветом (означает, что она не идентифицирована сборкой)

Теперь везде, где вы видите красным, удалите их, используя значок минут (-) ниже.

Теперь добавьте их вручную из вашей системы, используя значок плюса (+) ниже.

Постройте сейчас, и это должно работать.

У меня тоже была такая же проблема. Из терминала с помощью команды maven (mvn clean install -DskipTests=true) проект был успешно построен. Но в intellij не удалось идентифицировать файлы библиотеки jar spring.

Исправил это, выполнив следующие действия:

  1. закройте свою IDE(intellij)
  2. удалить sudo "rm -rf /<расположение_вашего_проекта>/.idea/" (/home/user/projects/test_proj/.idea/)
  3. снова откройте свою IDE. Ваши файлы будут переиндексированы, и проблема будет решена.

RCA: я подозреваю, что это происходит из-за проблемы с разрешением в Linux

Другие вопросы по тегам