Как декомпилировать в java-файлы intellij idea

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

8 ответов


чтобы использовать декомпилятор IntelliJ Java из командной строки для пакета jar, следуйте инструкциям, приведенным здесь: https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine


по состоянию на август 2017 года и IntelliJ V2017.2, принятый ответ больше не кажется полностью точным: нет fernflower.jar использовать.

файл jar называется java-decompiler.jar и не включает основной манифест... Вместо этого вы можете использовать следующую команду (из установки Mac):

java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler

(вы получите неправильный использование команда, но она работает).


следуйте инструкциям на IntelliJ JD плагин. Или смотрите отрывок из приведенных ниже инструкций.

java -jar fernflower.jar [<source>]+ <destination>

+ означает 1 или более раз
<source>: файл или каталог с файлами для декомпиляции. Каталоги рекурсивно сканировать. Разрешенными расширениями файлов являются class, zip и jar.
<destination>: каталог назначения

пример:

java -jar fernflower.jar -hdc=0 -dgs=1 -rsy=1 -lit=1 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\

имейте в виду, что если вы передадите его".jar " файл для источника, он создаст другого".jar "файл в месте назначения, однако, в пределах нового".jar " файл, файлы будут .вместо java .файлы классов (он не взрывает банку).


вы можете использовать один из них (вы можете использовать их онлайн или загружать их, есть некоторая информация о каждом из них) : http://www.javadecompilers.com/

одна идея IntelliJ использует fernflower, но она не может обрабатывать последние вещи - такие как String/Enum switches, generics (не тестировал этот лично, только читал об этом)... Я просто попробовал cfr с вышеуказанного сайта, и результат был таким же, как со встроенным декомпилятором (за исключением переключателя перечисления, который у меня был в моем классе.)


декомпилятор идеи IntelliJ не был построен с учетом такого использования. Он предназначен только для того, чтобы помочь программистам заглянуть в байт-код классов java, которые они разрабатывают. Для декомпиляции множества файлов классов, исходного кода которых у вас нет, вам понадобится другой декомпилятор java, который специализируется на этой работе и, скорее всего, работает автономно. Если вы google, вы должны найти кучу.


некоторое время назад я использовал Jad (Java Decompiler) для достижения этого - я не думаю, что декомпилятор IntelliJ был включен в экспорт в виду. Это скорее инструмент, помогающий просматривать классы, где источники недоступны.

JAD по-прежнему доступен для загрузки, но я не думаю, что кто-то поддерживает его больше:http://varaneckas.com/jad/

для него было множество плагинов, а именно Jadclipse (вы догадались, как использовать JAD в Eclipse-см. декомпилированные классы, где код недоступен :)).


попробовать

https://github.com/fesh0r/fernflower

скачать jar от

http://files.minecraftforge.net/maven/net/minecraftforge/fernflower/

:
java -jar fernflower.jar -hes=0 -hdc=0 C:\binary  C:\source

поместите файл jar в папку C:\binary и источник будет извлечен и упакован в опарнике внутрь C:\source - ...

наслаждайтесь!


Я использую JD-GUI для извлечения всех декомпилированных классов java в файлы java.