Получение "не удается найти символ" в Java-проекте в Intellij

Я делаю этот вызов статическому одноэлементному экземпляру из класса "GameManager.java".

HUD.getInstance().update(timeDelta);

HUD.java содержит класс HUD, а также два других связанных класса, HUDTextElement и HUDElement. Все классы находятся в одном корневом пути../src/org/mypackage

Тем не менее, при компиляции этого Java-проекта в IntelliJ я получаю "не могу найти Symbol HUD" в строке, в которой я выполняю вызов HUD.getInstance().

Этот точно такой же код прекрасно компилируется в Eclipse, есть идеи?

38 ответов

Выберите Build->Rebuild Project, чтобы решить его

У меня была такая же проблема, и я решил ее, выбрав Файл> Неправильные кэши / перезагрузка

У меня была та же проблема, и оказалось, что я никогда полностью не компилировал новый проект. Поэтому, щелкнув правой кнопкой мыши и выбрав Compile'' (shift-cmd-F9 на Mac), это исправили. Кажется, что компиляция при сохранении не "видит" некомпилированные файлы.

Маркировка папки src как источника не помогла в моем случае.

Я получаю ту же ошибку "не могу найти символ", когда я сделал Build -> Make Project, Я исправил это, удалив мой Maven /target папку, щелкнув правой кнопкой мыши мой модуль проекта и делая Maven -> Reimportи делает Build -> Rebuild Project, Это было на IntelliJ Idea 13.1.5.

Оказывается Maven -> Reimport было ключевым, так как проблема всплыла несколько раз, прежде чем я наконец сделал это.

Вероятно, ваша папка../src не помечена как папка "source" в Intellij IDEA, поэтому она не знает, где искать ваш класс. Вы можете щелкнуть правой кнопкой мыши папку в проводнике проекта и выбрать "пометить как исходную папку", чтобы это исправить.

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

Проверьте следующее, создайте / обновите, если чего-то не хватает

  1. Папка src помечена как исходная папка
  2. .imls файлы присутствуют
  3. Обработка аннотаций включена
  4. Если вы недавно использовали @UtilityClass, это также может быть причиной, ссылка на ошибку

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

  1. Перекомпилируйте файл / модуль

  2. Если это не устранило проблему, попробуйте обновить зависимость maven и построить проект, используя Maven -> Reimport а также Build -> Rebuild Project

  3. Пытаться mvn clean install -DskipTests

  4. Попробуйте сделать недействительным кеш IntelliJ и перезапустить IDE, используя File > Invalidate caches/ restart

  5. Удалите папку.idea и повторно импортируйте проект.

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

Для меня - я пробовал эти шаги (Invalidate Cache & Restart, Maven Reimport)), но они не сработали. Поэтому я удалил.idea, .settings, а также .project папку и попробовал - заработало.

Я решил эту проблему, щелкнув правой кнопкой мыши папку Java и перестроить

Спасибо за помощь до сих пор, оказывается, исправление заключается в том, чтобы сначала скомпилировать HUD.java (щелкните правой кнопкой мыши файл-> Compile HUD.java). После компиляции Java-файла остальная часть проекта может быть скомпилирована без проблем.

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

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

Right-click project folder -> Rebuild работал у меня.

Мне пришлось щелкнуть правой кнопкой мыши по проекту и выбрать "Reimport" в подменю "Run Maven".

Я использую Maven в моем проекте. По какой-то причине IntelliJ давал мне такие странные ошибки. Я запустил mvn clean и попытался выполнить повторную синхронизацию, и эти ошибки исчезли.

Перекомпиляция основного класса Application.java сделала это для меня, щелкните правой кнопкой мыши на классе> Перекомпилировать

Для меня это была проблема с Lombok, потому что он требует, чтобы была включена обработка аннотаций. Вы можете найти этот флажок наSettings > Build > Compiler > Annotation Processors

Если вы используете Lombok, убедитесь, что у вас включена обработка аннотаций.

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

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

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

После этого рекомендуется выполнить чистую установку.

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

$ mvn clean install -Dmaven.test.skip=true

А в IntelliJ выполните CMD + Shift + A (mac os) -> введите "Повторно импортировать все проекты Maven".

Если это не сработает, попробуйте принудительно перезагрузить зависимости maven.

$ mvn clean -U install -Dmaven.test.skip=true

Для меня ошибка исходила из @RequiredArgsConstructor(onConstructor = @__(@Inject)), и сообщение было cannot find symbol __. Сообщение об ошибке прямо над этим было «java: вы не используете компилятор, поддерживаемый lombok, поэтому lombok не будет работать и был отключен».

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

      -Djps.track.ap.dependencies=false

В моем случае проблема заключалась в использовании экспериментальной функции Lombok @UtilityClass в моем Java-проекте в Intellij Idea для аннотирования методов класса как "статических". Когда я явно сделал каждый метод класса "статическим" вместо использования аннотации, все проблемы компиляции исчезли.

В моем случае,

  1. закрыть intelliJ.
  2. удалите «.idea» (по умолчанию это скрытые папки) из корня проекта.
  3. открыть IntelliJ
  4. откройте настройки --> найдите обработчики аннотаций --> установите флажок "Включить обработку аннотаций"
  5. Откройте структуру проекта из меню «Файл». Установите соответствующую версию JDK.

Убедитесь, что в настройках компилятора Java для параметра «Целевая версия байт-кода» установлена ​​версия Java, содержащая функцию, которую вы пытаетесь использовать. Обычно для этого значения установлено значение «То же, что и уровень языка», но его можно переопределить для отдельных модулей. Когда это произойдет, редактор кода покажет предупреждения на основе других настроек языка, но компилятор сгенерирует байт-код для указанной версии Java. Если эти языковые настройки не совпадают, диагностировать проблему может быть сложно.

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

      import lombok.*; // <-- I just removed this line and reimport packages

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

У меня была та же проблема, за исключением того, что я импортировал классы, для которых зависимости не разрешались каким-либо образом. Я обновил Maven проектов, Rebuild Project. Это все еще не решило. Похоже, что IntelliJ что-то неправильно кешировал. Я перезапустил IntelliJ, и это разрешило зависимости. Я думаю, это очистило кеш как-то.

Однажды, когда Maven Reimport , Rebuild Project, Invalidate caches не помогли, я удалил подпапки artifacts а также libraries из папки .idea, а не целиком, поэтому я сохранил пользовательские настройки проекта.

Это работает для меня, скажем, класс A зависит от класса B(и класса c, d и т.д.), но ошибка возникает в классе A, который не имеет ошибок. Поэтому я стараюсь компиляция класса А одна первого -> он показывает ошибку на упаковке класса B . Итак, попытался скомпилировать весь пакет класса B. Теперь он выбрасывает точный класс ошибки (в моем случае класс B имел ошибку). Обычно Intellj показывает точный класс ошибки с номером строки при компиляции / сборке. В некоторых случаях выдает ошибку не в том месте / классе. Попробуй.

Иногда класс, который вы хотите, находится в test исходный каталог. Во всяком случае, случилось со мной...

Я все перепробовал и у меня ничего не получилось. Итак, потратив пару часов, я решил обновить версию идеи IntelliJ , и, наконец, она сработала!

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

Не забудьте потом обновить maven

Убедитесь, что исходный файл класса Java, к которому вы пытаетесь обратиться, имеет .java расширение. это было .aj в моем случае (я должен был нажать "Создать аспект" вместо "Создать класс" при его создании). IntelliJ показывает тот же значок для этого файла, что и для "обычного" класса, но компилятор не видит его при сборке.

изменения .aj в .java исправил это в моем случае.

Удалить все содержимое внутри ~/.m2. Начинать intellij-idea. (Используя IntelliJ IDEA 2021.3 (Community Edition))

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