Intellij не може вирішити символ при імпорті


126

Ця проблема виникає з перервами для різних бібліотек та різних проектів. При спробі імпорту бібліотеки пакет буде розпізнаний, але назву класу неможливо вирішити.

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

Я вже спробував недійсні кеші, не працює. Я не можу знайти жодних конфліктів класів - у моєму classpath немає жодного іншого файлу jar з тим самим іменем пакета. Я можу імпортувати цей клас в інші проекти.

Перегляньте знімки екрана:

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

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

Хтось має підказку?


1
Ви впевнені, що бібліотеку додано до модуля? Він може бути доданий як бібліотека проектів, але не бути на модулі.
mkobit

так - у структурі проекту бібліотека додається як залежність - насправді, я думаю, що це помилка в Intellij - трапляється випадковим чином для різних бібліотек / проектів -
відтворення

Якщо все, що згадується у відповіді, правильно. закрийте проект і знову імпортуйте. це вирішило це питання для мене.
Харі Крішнан

Відповіді:


250

ви можете спробувати вимкнути кеш і перезапустити intellij, у багатьох випадках це допоможе.

Файл -> Недійсні кеші / Перезапуск


Проект очищення також допоміг
GeRyCh

2
@GeRyCh IMHO, очищення Eclipse = Intellij
Invalidate

Не працював і для мене. Мій JUnit був «Глобальною бібліотекою». Коли я видаляю це і додаю власний дистрибутив JUnit5 IntelliJ, він працює. Коли я знову конвертую цю залежність у глобальну бібліотеку, помилки повертаються. Я підозрюю, що це помилка, оскільки замість цього перетворення в бібліотеку проектів працює чудово.
Марк Єронімус

1
Дякую, що це працювало для мене. Я щойно почав використовувати Intellij і мене вже так дратує. Неможливо вискочити з дужок, потрібно перезапустити програму, щоб вона склалася належним чином, це справді Windows ID Java Java.
azureai

3
У мене ця проблема є щонайменше раз на день з кількох тижнів. Дійсно наголошує, що переіндексація все займає назавжди.
шпигун

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 -> Створення джерел та оновлення папок

12

Перевірте залежність свого модуля.

  1. Структура проекту ( Ctrl+ Alt+ Shift+ S).
  2. Модулі
  3. Виберіть свій проблемний модуль.
  4. Змінити вкладку вгорі вікна "Залежності".
  5. Перевірте, яка потрібна бібліотека (можливо, вам потрібно додати вказану бібліотеку у вкладці "бібліотеки"), або тут вказаний модуль, і він має правильний обсяг (переважно "сумістити").

12

Запустіть цю команду в консолі проекту:

mvn idea:idea

Зроблено. Мав це питання багато разів. Спробував 'Invalidate Cache & Restart' та всі інші рішення. Виконання цієї команди мені ідеально підходить. Зараз я використовую IntelliJ 2019.2, але це траплялося і в попередніх версіях, і рішення працювало також.


Btw цей плагін Maven більше не підтримується
nabster

11

Я зіткнувся з подібною проблемою, коментар Майка допоміг мені рухатись у напрямку, щоб її вирішити.
Хоча необхідна бібліотека також була частиною модуля в моєму проекті, вона потребувала зміни обсягу. У залежності від модуля я змінив область застосування на " Компілювати ", а не на " Тест ", і для мене це працює нормально.


Компілюйте, а не Тест працює для мене. Ти знаєш чому?
30-го

1
Як це зробити? Хто такий Майк?
cellepo

8

Файл -> Недійсні кеші / Перезапуск або відновлення проекту не спрацювало.

Для мого проекту Gradle було "Оновити всі проекти Gradle" на вкладці Gradle у верхньому правому куті IntelliJ v2017, використовуючи жовту кнопку, показану нижче:

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


Ця відповідь зробила роботу і для мого проекту Maven. Для IntelliJ 2018.3.4 піктограма залишається такою ж (сині стрілки повороту), але точний заголовок опції називається "Повторно імпортувати всі проекти Maven". Величезне значення для автора, це так полегшує пошук правильного рішення для вашої проблеми після одногодинного дослідження
TomateFraiche

4

Наступна відповідь від @ jossef-harush та @ matt-laidholm корисна за іншим посиланням

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

Меню намірів IntelliJ

  • натисніть на Configure

Діалогове вікно вибору SDK проекту

  • У моєму випадку JDKшлях був неправильним (вказано на /opt/jdk1.7.0_51замість /opt/jdk1.7.0_65)

Не вдалося налаштувати діалогове вікно SDK

  • натисніть на ...та перейдіть до потрібного JDKшляху

Виправлено налаштування діалогового вікна SDK

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

Меню файлів IntelliJ



3

Клацніть правою кнопкою миші на файл pom.xml, перейдіть до Maven і натисніть Reimport. У мене були подібні проблеми, і це працювало на мене.


1

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


Це насправді не рішення. Я намагався це пробувати, але це не впливає на мій випадок.
Тунг

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. Я отримав помилку під час спроби використовувати школу імпорту в User.java.
  7. Intellij постійно скаржиться, що не може вирішити символ при імпорті.

Рішення:

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

Першопричина:

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

Як видно з дерева. У мене з'явився каталог з іменем net.gongmingqm10.sketch. Але нам дійсно потрібен каталог 3 рівнів: net-> gongmingqm10-> ескіз

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

Коли ми намагаємося імпортувати його. Очевидно, як можна intellij імпортувати файл під набридлий каталог з назвою a.b.c.


Спасибі чувак, це була моя проблема. редагувати: розробляти ... Я скопіював з одного модуля maven в інший, і копія розрівняла каталоги. в той час як Intellij виглядав так, ніби все було відсортовано, моя папка насправді була "abc", а не> b> c.
Qbert

1

@Anton Dozortsev Мене звели з розуму від подібної поведінки; Я закінчила перевстановлення IDE ще чимало разів, лише вирішивши проблему після видалення програми IDEA, усіх кешів, налаштувань тощо.

Я пробував усі типи проміжних заходів (наприклад, перезавантаження, виправлення, видалення .ideaта *.imlфайли тощо).

Виявляється, проблема була пов’язана з idea.max.intellisense.filesizeналаштуваннями IntelliJ . Я встановив його на 100 КБ, що було меншим за розмір моєї залежності, що призвело до того, що IntelliJ показав його як невідомий, як на екрані екрана.

Виправити:

  1. Клацніть на Довідка -> Редагувати власні властивості

  2. Встановіть властивість на велике значення; за замовчуванням - 2500 КБ idea.max.intellisense.filesize=2500


1

Була така ж проблема, поки я не помітив, що папка src була позначена як джерело root замість java ! Зміна лише Java (src / main / java), що є вихідним корінцем, вирішила мою проблему введіть тут опис зображення


1

Спробуйте Файл-> Синхронізувати. Потім закрийте і знову відкрийте IntelliJ перед тим, як визнати недійсним.

Одного разу я перезапустив. Я був би недійсним, але синхронізація очистила все після перезавантаження.


0

Простий перезапуск працював на мене.

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

PS: Очищення кешів системи призведе до очищення локальної історії.


0

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

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

Оновлення: добре протягом 1 години, повернення до зламаного статусу ...


0

Я знайшов причину!

У моєму випадку я додаю jar-файл, включаючи якийсь вихідний файл java, але я думаю, що джерело java погано, в бібліотеці залежностей від Intellij Idea воно додає джерело автоматично, тому в редакторі імпорт BAD UST ПЕРЕКЛО видалити вихідний код у " Структура проекту "->" Бібліотека ", це працює для мене.


0

Для мене це відредагувати пакунок у папці .idea, оскільки я випадково додав джерела до цієї бібліотеки jar, а android не міг вирішити його, видаливши рядок джерел, як зазначено в помилці бібліотеки зображень b / m .

Потім відновіть вирішену проблему граду та бамбука.


0

У мене виникло те саме питання, і причиною цього було неправильне маркування джерел проекту.

Я вручну створив кореневе вміст і не помітив , що src/main/testпапка була позначена як Sourcesзамість Tests. Так ось чому передбачалися мої тестові класи , щоб мати всі свої тестові бібліотеки ( JUnit, Mockitoі т.д.) з об'ємом компіляції, а НЕ тест.

Щойно я позначив src/main/testяк Тести і відновив модуль, всі помилки зникли.


0

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


0

Та сама проблема. Якщо ці методи не спрацюють. ви можете спробувати видалити lib з локального сховища Maven та повторно імпортувати до pom.

mvn сховище

Зрештою, це добре для мене.

проект


0

file-> Project Structure-> Modules, знайдіть модуль із проблемами, клацніть по ньому та виберіть Dependenciesвкладку праворуч. Клацніть зелений знак плюс, спробуйте додати банку або бібліотеки, які спричинили проблему. Це працює для мене.


0

Після довгих пошуків я виявив, що залежність якось пошкоджена на моїй машині в проекті Maven. Дивна річ полягала в тому, що залежність все ще працювала правильно у складеному коді Java. Коли я очистив і відновив кеш залежності Maven, проблема усунулася, і IntelliJ розпізнав пакет. Це можна зробити, виконавши:

mvn dependency:purge-local-repository

Цікаво, що джерелом моєї проблеми було не IntelliJ, а сам Maven.


0

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

Як тільки "2-версія" була щасливо вирішена скрізь, я тоді зміг переробити і видалити 2 із класу та файлу, і все тоді було як належить.


0

у моєму випадку рішенням було додати проект як проект Maven, крім того, що я імпортував як проект Maven: P

перейдіть до pom.xml -> клацніть правою кнопкою миші -> додати як проект maven


0

Intelli iDEA викликає ці дурні проблеми @ рази. Простий goto pom.xml, клацніть правою кнопкою миші та зробіть -> Maven -> Reimport.

Це повинно вирішити проблему.


0

Для 2020.1.4 Ultimate edition мені довелося зробити наступне

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

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

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


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