У меня есть проект с несколькими файлами .java, источник которых я могу прекрасно просмотреть в IntelliJ, за исключением одного.
Этот файл является файлом .java, как и другие, но IntelliJ помечает его как «Декомпилированный файл .class», а исходный код полностью пуст. Если я открою файл в текстовом редакторе, я могу прекрасно увидеть исходный код. Сборки Ant также отлично работают с этим файлом.
Это не отсутствующие источники JDK, где вы могли бы ожидать увидеть декомпилированный код. И это тоже не скомпилированный файл .class, который я открываю.
Удаление файла из проекта и обновление из системы управления версиями для его восстановления, похоже, не помогает.
Вот как это выглядит, когда я пытаюсь открыть файл в IntelliJ:
Что может вызвать такое поведение в IntelliJ и что я могу сделать, чтобы это исправить?




Если один и тот же класс (сравнивающее полное имя) существует в вашем проекте и одновременно исходит из сторонней зависимости, иногда IntelliJ может запутаться.
Это также происходит с зависимостями, если у вас открыт декомпилированный класс в окне редактора и вы нажмете действие «Загрузить исходники». Это приводит к тому, что другое окно редактора открывает только что загруженный исходный код для того же класса, и навигация IntelliJ сходит с ума (прыжок Ctrl + Left click и другие действия).
Единственное известное мне решение - перезапустить IntelliJ и надеяться, что он сработает. Вы также можете попробовать File > Invalidate Caches and Restart, который заставит IntelliJ переиндексировать мир.
Я решил свою проблему.
Каким-то образом я случайно добавил имя этого отдельного файла в список Java Class File Types, и поэтому этот файл был связан как декомпилированный файл .class таким же образом, как и фактический файл .class.
Исправление собирается в Settings (Ctrl+Alt+S) ⇒ Editor ⇒ File Types, прокрутите вниз до класса Java в списке Recognized File Types, выберите имя файла в списке Registered Patterns и нажмите кнопку Remove.
Я не понял, как он был автоматически добавлен в этот список. Можно предположить, что я, возможно, принял всплывающее окно с предложением или выбрал неправильное действие Intention Action, и поэтому имя открытого или активного файла было добавлено в список типов .class.
Это довольно уникальное имя класса, поэтому проблем с коллизиями быть не должно. И никакие другие декомпилированные классы не открывались в других окнах. Ни перезагрузка, ни
File > Invalidate Caches and Restartне помогли.