IntelliJ показывает декомпилированный файл .class вместо исходного кода
У меня проблемы с IntelliJ - он показывает мне "декомпилированную" версию класса, а не его исходный код, если я нажимаю Ctrl + клик по классу.
Вот что я вижу:
![Decompiled class message]()
Я пытаюсь открыть обычные исходные файлы JDK.
Наиболее актуальная проблема, которую я обнаружил, объясняется здесь: исходники Java заменены декомпилированными файлами в Intellij
Самый подробный ответ, который я нашел до сих пор, там также.
Все же это не работает для меня:
-
Плагин просмотра байт-кода выключен.
-
Плагин декомпилятора Java байт-кода выключен.
-
Платформа, Проект и Модуль имеют одинаковую настройку версии JDK.
-
У меня есть два JDK, доступных в IntelliJ: jdk1.8.0_161 и jbsdk8u112b287.2_windows_x86 (в комплекте с IntelliJ, но поставляется без src.zip). Пробовал с обоими (пришлось указать src.zip jdk1.8.0_161 для jbsdk8u112b287.2_windows_x86) - не повезло
-
src.zip не поврежден - я могу открыть его через WinRAR
-
При добавлении jdk1.8.0_161 в IntelliJ автоматически обнаруживается src.zip. При ручном добавлении src.zip на вкладку jbsdk8u112b287.2_windows_x86 Sourcepath - он запустил "Сканирование на наличие корней", но предупредил, что "не может определить, какие файлы содержат выбранные элементы", и предложил мне "присоединить их как" источники "". поэтому я согласился.
-
Пробный файл> Недействительные кэши/перезагрузка... - тот же результат.
-
Та же проблема в 2017.3 и свежих версиях IntelliJ 2018.1.
-
Указание пути для документации заставляет IntelliJ искать документацию по указанному пути. Так что это работает как следует для обоих JDK. Но не для источников.
-
Все остальное работает/компилируется правильно.
Мои настройки:
![Settings]()
Ответы
Ответ 1
1. Получить исходные файлы
Убедитесь, что вы загрузили и установили исходные файлы JDK.
Я использую Arch Linux и установил их с помощью pacman -S openjdk8-Src
который поместил src.zip
в /usr/lib/jvm/java-8-openjdk/
. Мы будем использовать этот zip файл на следующем шаге.
Чтобы получить список исходных пакетов различных версий JDK, выполните pacman -Ss "openjdk.*-Src"
.
Посмотрите этот вопрос о том, как получить исходные файлы для вашей конкретной платформы.
2. Укажите IntelliJ на исходные файлы
В настройках вашего модуля (откройте их с помощью F4) в "Настройках платформы" → "SDK" → "Исходный путь", добавьте zip файл, содержащий исходный код JDK, в ваш проект JDK (не забудьте выбрать правильный JDK, если IntelliJ перечисляет больше чем один JDK) с помощью кнопки со знаком плюс:
![Sourcepath screenshot]()
3. Перейти в источник
Выберите класс JDK, например, Comparator
, используя IntelliJ Search Everywhere или Ctrl + b с курсором на имени класса.
![Comparator source]()
Ответ 2
Если вы находитесь в проекте maven, убедитесь, что в структуре проекта все соответствующие папки находятся в исключенном разделе. ![enter image description here]()
Ответ 3
Я столкнулся с той же проблемой, и наконец она исчезла после того, как я скопировал JDK в другую папку и изменил конфигурацию в IntelliJ. Я думаю, может быть, потому, что раньше в пути был пробел, потому что он установлен в папке "Program Files".