Подтвердить что ты не робот

IDEA JetBrains IntelliJ - ошибка компиляции на "make", но отлично при компиляции с использованием Maven и ошибок, сообщаемых IntelliJ в файле класса

Итак, у меня есть модуль maven (модуль-A) в IntelliJ. Недавно я переместил некоторые классы из него в новый модуль maven (модуль-B) и добавил к нему зависимость. Как только я это сделал, я также модифицировал подпись метода одного из перемещенных классов (теперь в модуле-B).

Я повторно импортировал poms, чтобы IntelliJ забирал изменения зависимостей и гарантировал, что все импорт Java для затронутых файлов снова будет правильным. Теперь, когда я пытаюсь запустить мой webapp (который зависит от двух модулей), я получаю ошибку компиляции в классе в модуле-A, вызывающем модифицированный метод класса в модуле-B.

Сообщение об ошибке в основном говорит о том, что этот метод не существует, но полагает, что старый метод все еще существует! Я нажимаю на ошибку "make", и это приводит меня к строке в классе в модуле-A, вызывающем модифицированный метод... странно, IntelliJ знает, что в файле хорошо. т.е. метод не подчеркивается красным цветом, как обычно, как ошибка компиляции, но имя файла класса: (

Я скомпилировал его из командной строки, используя 'mvn install' (также установив модуль-B), и все это успешно. Я удалил каталог классов в объекте как модуля-A, так и модуля-B, а также недействительные кеши IntelliJ и перезапустил... все еще происходит... любые идеи?

4b9b3361

Ответ 1

Так просто заявил сегодня утром, и все это работает!

Вчера вечером я сделал новый проект (проект intelliJ) из модуля-A и родителя-родителя модуля-B и успешно получил его для сборки, возможно, это сделал, а затем, открыв мой оригинальный проект, снова исправил его как-то.. очень раздражающий, хотя

Ответ 2

Я узнал, что это может помочь:

Файл → Недействительные кеши

Ответ 3

Проекты Maven → Reimport должны помочь.

Ответ 4

Я потратил несколько часов на эту же проблему. Все очищения в мире не помогли.

Я удалил свой внешний и целевой каталог в моем проекте и перекомпилировал - это очистило его.

Изменить: в меню файла есть также волшебная функция: "Invalidate Caches/Restart". Это исправляет проблемы "intellij confused".

Ответ 5

Попробуйте mvn clean ваши проекты и mvn install ваш проект B.

Интеграция maven с intelliJ является своего рода ошибкой при использовании команды make, непосредственно предоставляемой Intellij. Вы должны напрямую использовать команды mvn или запускать их с панели maven.

Ответ 6

Измените параметр "Компилятор Java" в IDEA (компилятор пользователя javac in-process), чтобы устранить проблему.

Ответ 7

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

Мой код будет компилироваться с помощью задачи ant, которую я обычно запускаю, но он не будет построен в IntelliJ, жалуясь на "Не могу найти символ бла-бла"

Оказывается, вы можете добавить файлы "Исключенные" для компилятора. Мой файл каким-то образом добавлен в этот список.

Этот список находится в файле > Настройки > Компилятоp > Исключения (IntelliJ 13)

Ответ 8

Следующие шаги должны решить эту проблему:

  • удалить.IntelliJIdea12/.IdeaIC12 старше в c:/user/.../
  • Недействительный кеш Intelli: Файл > Недействительный кеш.
    Это повторно индексирует ваше рабочее пространство при запуске, а также очищает вашу локальную историю. Прежде чем вы это сделаете, зафиксировать или создать резервную копию всех ваших незафиксированных изменений.
  • Как только ваше рабочее пространство вернется после индексации, выполните maven clean install.
  • когда сборка будет успешной, нажмите Maven Re-import

Это работало для меня, я думаю, что он должен работать и для других с аналогичной проблемой.

Ответ 9

Поведение, которое я вижу, похоже на поведение, описанное автором. Маркеры ошибок отображаются в правой части редактора в Intellij 14 и менее в 13.

Это происходит и при использовании Scala вместо Java и использовании SBT вместо Maven.

Также заметил, что это происходит после загрузки второго проекта. Первое всегда прекрасно. (После долгих проб и ошибок). Возможно, это связано с тем, что внутренние кеши Intellij становятся как-то испорченными. "Invalidate caches" работал когда-то, а иногда и нет.

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

Затем "Изменение местоположения кэша Ivy для проектов sbt в IntelliJ IDEA"? post дал идею отделить кэш-память плюща SBT и Intellij в надежде, что путь плюща является частью внутреннего ключа кэша.

Пол Филлипс из TypeSafe предоставляет инструмент "Дополнительные инструменты SBT", и здесь я нашел способ проинструктировать SBT использовать проект на основе плюща, кеш и загрузку SBT:

https://raw.githubusercontent.com/paulp/sbt-extras/master/sbt

declare -r noshare_opts = "- Dsbt.global.base = project/.sbtboot -Dsbt.boot.directory = project/.boot -Dsbt.ivy.home = project/.ivy"

Наконец-то избавился от пользователя home.ivy2 и всего содержимого. Чтобы убедиться, что Intellij не использует эту папку, я сделал ее только для чтения. Это была ошибка. По-видимому, Intellij молча отключает зависимости, если вы это делаете.

Это решило ошибки и верь, что они не вернутся.: -)

Если Intellij ребята слышат это: проверьте свои релизы (Scala, SBT, editor) со всеми шаблонами Play Framework от TypeSafe. Проблема становится очевидной быстро таким образом.

Ответ 10

У меня просто была аналогичная проблема, которая сводила меня с ума. Я сделал все другие вещи, упомянутые в ответах выше, потому что я использовал Intellij навсегда, но никто не работал. В конце концов, я узнал, что в части проекта maven Intellij один из моих модулей был отмечен как "игнорировать", простая команда unignore из контекстного меню сделала трюк.

Ответ 11

У меня было очень похожее поведение. Запуск тестов (Scala -) всегда будет терпеть неудачу из-за ошибок в несвязанных классах Java во время шага "make".

Оказалось, что я включил "глобальную" SDK-библиотеку, которая столкнулась с одной из зависимостей проекта. Правильное полезное сообщение об ошибке появилось только после того, как я удалил шаг "make" из теста. Затем я удалил дублируемую библиотеку, добавил шаг make к тесту, и теперь все работает нормально.

Ответ 12

Я столкнулся с этой проблемой сегодня после обновления с 12 до 13.

Позже я исправил проблему, так как я использовал одно и то же имя для Project и Module, и выглядит так: Intellij позволяет это, но не может справиться с этим правильно.

Не знаю, почему настройка повлияет на компиляцию, хотя в редакторе java нет ошибки. Должна быть ошибка в версии 13.

Ответ 13

У меня возникла аналогичная проблема после обновления с IntelliJ 12 до 13. После нескольких удалений и повторной установки (из нескольких версий intelliJ), многочисленных очищений и очистки репозитория .m2, я наконец выяснил, в чем была моя проблема.

В моих настройках intelliJ репозитории, упомянутые в моем основном файле POM, не могут быть подключены. это было в свою очередь из-за и альтернативного репозитория, который упоминался как часть моего файла pom. Как только POM был сделан, чтобы указать на правильный репозиторий, все мои классы устраняли проблемы компиляции.

Чтобы проверить, подключены ли ваши репозитории, перейдите в меню Файл → Настройки → Maven → Репозитории

Здесь индексированные хранилища maven должны быть успешно подключены. Если это не так, то intelliJ не сможет решить большинство зависимостей сторонних разработчиков и модулей.

Ответ 14

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

При создании пакетов для нового проекта я случайно создал пакет под названием "org.package".

Мой проект затем имел структуру каталогов, например:

/src/main/java/org.package/

Это вызвало всевозможные хаосы с IntilliJ.

Как только правильная структура папок была создана в файловой системе, IntelliJ отлично поработала.

/SRC/главная/Java/орг/пакет/

Обратите внимание на разницу в/org.package/vs/org/package/

Ответ 15

В моем случае я вручную пометил каталог как "Корень источников тестирования", но IDEA пометил его в родительском проекте Maven. Отметить его в файле- > Структура проекта...- > Модули исправили проблему.

Ответ 16

Исправлено: я сделал javac вместо Ajc, и я, конечно, поместил 1.8, согласно вашей версии jdk.

по какой-то причине, когда я аннулировал и перезапустил intellij, он был установлен по умолчанию!

после того, как я исправил, я сделал его javac вместо Ajc

моя версия

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