Intellij не может разрешить символ при импорте

127

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

Если в операторе импорта right-click -> Goto -> the package's declarationя вижу все декомпилированные классы, отображаемые на боковой панели - включая те, которые мне нужны - Если я пытаюсь автоматически заполнить оператор импорта, я замечаю, что нужный мне класс отсутствует в падать.

Я уже пробовал аннулировать кеши, не работает. Я не могу найти никаких конфликтов классов - в моем пути к классам нет другого файла jar с тем же именем пакета. Я могу импортировать этот класс в другие проекты.

См. Снимки экрана:

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

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

У кого-нибудь есть подсказка?

Асаф Эбги
источник
1
Вы уверены, что библиотека добавлена ​​в модуль? Его можно добавить как библиотеку проекта, но не в путь к классам модулей.
mkobit
да - В структуре проекта библиотека добавляется как зависимость - На самом деле, я думаю, что это ошибка в Intellij - Случается случайным образом для разных библиотек / проектов - Обычно это исправляет воссоздание проекта с нуля
Асаф Эбги,
Если в ответе все правильно. закройте проект и повторите импорт. это решило эту проблему для меня.
Хари Кришнан

Ответы:

250

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

Файл -> Недействительные кеши / перезапуск

Сахитья
источник
проект уборки тоже помог
GeRyCh
2
@GeRyCh ИМХО, очистка Затмения = Intellij Invalidate кэш
Гангнус
У меня тоже не сработало. Мой JUnit был «глобальной библиотекой». Когда я удаляю это и добавляю собственный дистрибутив IntelliJ JUnit5, он работает. Когда я снова конвертирую эту зависимость в глобальную библиотеку, ошибки возвращаются. Я подозреваю, что это ошибка, потому что преобразование ее в библиотеку проекта работает нормально.
Марк Иеронимус
1
Спасибо, это сработало для меня. Я только начал использовать Intellij и меня это уже так раздражает. Нельзя выпрыгивать из круглых скобок, необходимо перезапустить программу, чтобы она правильно компилировалась, это действительно Windows Java IDE.
azureai
3
У меня эта проблема возникает не реже одного раза в день в течение нескольких недель. Меня действительно беспокоит, потому что переиндексирование всего занимает вечность.
spyro
38

Для этого может быть несколько причин. В моем случае это была неправильная проблема с корнем источника. Недействительные кеши не работали вместе с другими решениями.

Проверьте корни исходного кода вашего модуля.

  1. Структура проекта ( Ctrl+ Alt+ Shift+ S).

  2. Модули

  3. Выберите проблемный модуль.

  4. Сменить вкладку в верхней части окна «Источники».

  5. Удалите ненужные исходные корни. Оставьте один и добавьте в него корни src и тестового исходного кода.

Випин Томас
источник
1
Я не знаю, работает ли это для некоторых людей, но кажется, что это так, и мне интересно, почему: на самом деле ваша следующая синхронизация Gradle воссоздаст все те исходные каталоги, которые вы только что удалили.
Fran Marzoa
16

У IntelliJ есть проблемы с разрешением зависимостей. Попробуйте следующее:

  1. Щелкните правой кнопкой мыши pom.xml -> Maven -> Reimport
  2. Снова щелкните правой кнопкой мыши pom.xml -> Maven -> Создать источники и обновить папки
Chandlersingh
источник
12

Проверьте зависимости вашего модуля.

  1. Структура проекта ( Ctrl+ Alt+ Shift+ S).
  2. Модули
  3. Выберите проблемный модуль.
  4. Перейдите на вкладку в верхней части окна «Зависимости».
  5. Проверьте, какая библиотека вам нужна (возможно, вам нужно добавить указанную библиотеку на вкладке «библиотеки») или модуль указан здесь и имеет правильную область видимости (в основном «компилировать»).
Артем Моисеенко
источник
12

Выполните эту команду в консоли проекта:

mvn idea:idea

Готово. Была эта проблема много раз. Пробовал «Недействительный кэш и перезапуск» и все другие решения. Мне идеально подходит выполнение этой команды. В настоящее время я использую IntelliJ 2019.2, но это также происходило в предыдущих версиях, и решение также работало.

Лювер Рейнир Дуран Перес
источник
Кстати, этот плагин maven больше не поддерживается
набстер
11

Я столкнулся с аналогичной проблемой, комментарий Майка помог мне двигаться в направлении ее решения.
Хотя требуемая библиотека также была частью модуля в моем проекте, ей нужно было изменить объем. В зависимости от модуля я изменил область действия на « Компилировать », а не на « Тест », и теперь у меня все работает нормально.

шалунья
источник
Для меня работает Compile, а не Test. Ты знаешь почему?
30ч
1
Как ты делаешь это? Кто такой Майк?
cellepo
8

Файл -> Недействительные кеши / перезапуск или перестройка проекта меня не устроили.

Что сработало для моего проекта Gradle, так это «Обновить все проекты Gradle» на вкладке Gradle в правом верхнем углу IntelliJ v2017, используя желтую отмеченную кнопку, показанную ниже:

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

eaykin
источник
Этот ответ также помог моему проекту Maven. Для IntelliJ 2018.3.4 значок остается прежним (синие поворотные стрелки), но точное название параметра называется «Повторно импортировать все проекты Maven». Большое
спасибо
4

Я нашел следующий ответ от @ jossef-harush и @ matt-leidholm полезным из другой ссылки

  • в редакторе IntelliJ щелкните красное ключевое слово ( Integerнапример) и нажмите ALT+ ENTER(или щелкните значок лампочки)
  • выберите Setup JDKиз меню намерений

Меню намерений IntelliJ

  • нажмите на Configure

Диалог выбора Project SDK

  • В моем случае JDKпуть был неверным ( /opt/jdk1.7.0_51вместо него был указан /opt/jdk1.7.0_65)

Сломанный диалог настройки SDK

  • нажмите ...и перейдите к правильному JDKпути

Исправлен диалог настройки SDK

  • давайте очистим кеш

Меню файла IntelliJ

manntsheth
источник
4

Файл -> Недействительные кеши / перезапустите и создайте свой проект

Суровая мишра
источник
3

Щелкните правой кнопкой мыши файл pom.xml, перейдите в Maven и щелкните Reimport. У меня была аналогичная проблема, и это сработало для меня.

rdutta
источник
1

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

sheldonkreger
источник
Это не совсем решение. Раньше пробовал, но на мой случай это не влияет.
Tung
1

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

Ниже показано, как я получил эту глупую проблему.

  1. Создайте пустой проект и создайте новый каталог src/main/java.
  2. Создайте исходный пакет net.gongmingqm10.sketch.
  3. Используйте gradle wrapper, gradle ideaчтобы создать Gradle для проекта.
  4. Добавьте некоторые зависимости в build.gradleфайл иgradle build повторно импортируйте проект.
  5. Создайте User.javaи School.javaв существующем пакетеnet.gongmingqm10.sketch
  6. У меня возникла ошибка при попытке использовать import School в User.java.
  7. Intellij продолжает жаловаться, что не может разрешить символ при импорте.

Решение:

Сначала соберите проект и отметьте main / java как корень исходного кода. Создайте новый каталог с таким же именем net.gongmingqm10.sketch. Переместите все файлы из старых проблемных пакетов в новый пакет.

Основная причина:

Дерево каталогов исходного кода

Как видно по дереву. У меня есть каталог с именем net.gongmingqm10.sketch. Но что нам действительно нужно, так это трехуровневый каталог: net-> gongmingqm10-> sketch

Но прежде чем я закончу сборку своего проекта в Intellij, я создаю новый каталог с именем net.gongmingqm19.sketch, который даст мне настоящий каталог с именемnet.gongmingqm10.sketch .

Когда мы пытаемся его импортировать. Очевидно, как intellij может импортировать файл в каталог weired с именем a.b.c.

Мин Гун
источник
Спасибо, чувак, это была моя проблема. изменить: разработка ... Я скопировал из одного модуля maven в другой, и копия сгладила каталоги. в то время как Intellij выглядел так, как будто все было отсортировано, моя папка на самом деле была «abc», а не a> b> c.
Qbert 01
1

@Anton Dozortsev Меня свело с ума подобное поведение; В итоге я переустанавливал IDE несколько раз, решая проблему только после удаления приложения IDEA, всех кешей, настроек и т. Д.

Я перепробовал все виды шагов в промежуточном период , (например , перезагружается, инвалидация, удаление .ideaи *.imlфайлы, и другие.)

Оказывается, проблема связана с idea.max.intellisense.filesizeнастройкой IntelliJ . Я установил его на 100 КБ, что было меньше размера моей зависимости, что привело к тому, что IntelliJ показал его как неизвестный, как на вашем скриншоте.

Fix:

  1. Нажмите Help -> Edit Custom Properties.

  2. Установите для свойства большее значение; по умолчанию 2500 КБ idea.max.intellisense.filesize=2500

Михай Божин
источник
1

Была такая же проблема, пока я не заметил, что папка src была помечена как корневой источник вместо java ! Переход только на java (src / main / java) в качестве исходного корня решил мою проблему введите описание изображения здесь

Pipo
источник
1

После долгих поисков я обнаружил, что зависимость была каким-то образом повреждена на моей машине в проекте maven. Странно было то, что в скомпилированном Java-коде зависимость все еще работала правильно. Однако когда я очистил и перестроил свой кеш зависимостей maven, проблема исчезла, и IntelliJ распознал пакет. Вы можете сделать это, запустив:

mvn dependency:purge-local-repository

Интересно, что источником моей проблемы был не IntelliJ, а сам maven.

JohannesB
источник
1

Пожалуйста, попробуйте File-> Synchronize. Затем закройте и снова откройте IntelliJ, прежде чем аннулировать.

Один раз перезапустил. Я бы аннулировал, но синхронизация очистила все после перезапуска.

Адам М. Эриксон
источник
0

У меня сработал простой перезапуск.

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

PS: Очистка системных кешей приведет к очистке локальной истории.

neoguy
источник
0

У меня была аналогичная проблема с моим импортированным проектом Maven. В одном модуле он не может разрешить символ при импорте для части другого модуля (да, часть этого модуля может быть разрешена).

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

Обновление: годен в течение 1 часа, снова сломан ...

Вэньбинь
источник
0

Я нашел первопричину!

В моем случае я добавляю файл jar, включающий некоторый исходный файл java, но я думаю, что источник java плохой, в библиотеке зависимостей Intellij Idea он добавляет источник автоматически, поэтому в редакторе импорт ПЛОХОЙ , ПРОСТО удалите исходный код в " Структура проекта »->« Библиотека », у меня работает.

crazycode
источник
0

Что для меня сделало это, так это отредактировать файл пакета в папке .idea, поскольку я случайно добавил источники в эту библиотеку jar, и Android не смог решить его, удалив строку источников, как отмечено в ошибке библиотеки изображений b / m .

Затем восстановите градиент и проблема решена.

марио
источник
0

У меня была такая же проблема, и причиной этого была неправильная разметка исходников проекта.

Я вручную создал корневой контент и не заметил, что src/main/testпапка была помечена как Sourcesвместо Tests. Поэтому предполагалось, что мои тестовые классы имеют все свои тестовые библиотеки ( JUnit,Mockito и т. Д.) С областью действия Compile, а не Test.

Как только я пометил « src/main/testТесты» и перестроил модуль, все ошибки исчезли.

Евгений Гордиенко
источник
0

У меня было это недавно, когда я пытался использовать Intellij для работы с NiFi, оказалось, что проблема в том, что NiFi требует Maven> = 3.1.0, а версия, с которой я проверял (я думаю, что по умолчанию), была 3.0.5. Обновление версии Maven для проекта исправило это, поэтому в некоторых случаях несовпадение версии Maven может быть проблемой ... Я предполагаю, что это довольно необычно, но если вы зайдете так далеко в потоке, у вас, вероятно, есть необычный вопрос :)

Исаак
источник
0

Та же проблема. Если эти методы не работают. вы можете попробовать удалить библиотеку из локального репозитория maven и повторно импортировать в pom.

mvn репозиторий

Наконец-то для меня это нормально.

проект

Misire J
источник
0

file-> Project Structure-> Modules, найдите модуль с проблемами, щелкните его и выберите Dependenciesвкладку справа. Щелкните зеленый знак плюса, попробуйте добавить банку или библиотеки, которые вызывают проблему. Это подходит для меня.

SteveHu
источник
0

Ничего из того, что я пробовал выше, у меня не сработало (не то чтобы я пробовал все предложения). В конечном итоге трюк был переименован в класс - я просто добавил 2 к имени класса и имени файла. Затем я вручную разрешил все ссылки. (Поскольку они не были распознаны, рефакторинг не изменил ссылки автоматически.)

Как только «2-версия» была успешно разрешена повсюду, я смог провести рефакторинг и удалить 2 из класса и файла, и все было так, как должно быть.

серое вещество
источник
0

в моем случае решение заключалось в том, чтобы добавить проект как проект maven, помимо того факта, что я импортировал как проект maven: P

перейдите в pom.xml -> щелкните правой кнопкой мыши -> добавить как проект maven

lempesis
источник
0

Intelli iDEA вызывает эти глупые проблемы @ раз. Простой goto pom.xml, щелкните правой кнопкой мыши и выполните -> Maven -> Reimport.

Это должно решить проблему.

Адитья Гоэль
источник
0

Для версии 2020.1.4 Ultimate мне пришлось сделать следующее

View -> Maven -> Generate Sources and Update Folders For all Projects

Проблема для меня заключалась в том, что библиотеки не заполнялись с mvn -U clean installтерминала.

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

user1599755
источник
-1

Пропал io? Попробуй import org.openide.util.io.ImageUtilities.

Шаньцзюнь Ли
источник