Куда IntelliJ помещает файлы .class при компиляции во время ввода текста

StackOverflow https://stackoverflow.com//questions/25045621

Вопрос

Постоянно ли IntelliJ компилируется, поскольку он сообщает мне красными волнистыми линиями, когда возникает ошибка?(в дополнение к функциям автозаполнения) Или это какая-то псевдокомпиляция?

Если он выполняет законную компиляцию, то куда он помещает эти скомпилированные классы?Я бы хотел указать мой JRebel на этот каталог вместо отдельных целевых папок модуля.

Это было полезно?

Решение

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

После того как вы перестанете печатать, вы увидите маленький цветной глазок в верхней части правого желоба.Это указывает на то, что IDE запускает "аннотаторы" и "проверки кода".Они могут определить, являются ли классы, методы и переменные допустимыми, на основе текущего индекса и текущего состояния вашего файла (импорт, объявления и т.д.).То же самое касается неиспользуемых переменных, недопустимых параметров в вызовах методов и т.д.

Плюсы:

  • аннотаторы работают непосредственно с тем, что они называют PSI-деревом, которое по сути является расширенным AST, представляющим ваш текущий файл
  • это может быть быстрее, чем компиляция каждый раз (при этом используется индекс и не требуется перекомпилировать каждый зависимый класс).
  • аннотаторы могут обнаруживать разные вещи javac меня не волнуют, например, потенциальные ошибки (например,используя = вместо того, чтобы == в while состояние)

Минусы:

  • это огромная работа, в основном им нужно переписать логику, чтобы найти каждую ошибку, которая javac может производить (именно поэтому вы можете найти множество проблем в их багтрекере с пометкой "хороший код - красный" или "плохой код зеленого цвета", что означает, что есть разница между тем, что они обнаруживают, и тем, что будет выводить компилятор)

TL;DR:это не производит никакого .class пока вы не создадите свой проект, все делается "вручную".

Другие советы

Для каждого модуля выходной путь компилятора можно найти из вкладки в настройках модуля . Плагин Jrebel автоматически генерирует rebel.xml и получает путь к каталогу от настроек модуля , поэтому вам не нужно указывать на места вручную - просто генерировать rebel.xml с помощью плагина IDE: щелкните правой кнопкой мыши на модуле вПросмотр проекта -> Jrebel -> Generate Rebel.xml

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

Просто добавлю, что после компиляции классы сохраняются в target каталог, если это проект Maven - в противном случае каталог указан в структуре проекта IntelliJ, в разделе "Выходные данные компилятора проекта".:

enter image description here

Я нашел свои файлы .class, перейдем к внедорожнику / производственным / основным папкам из домашнего каталога проекта.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top