Извлечь исходный код из файла .jar

172

Есть ли способ извлечь исходный код из исполняемого файла .jar (Java ME)?

Hiba
источник
3
Но учтите, что это может быть незаконно в зависимости от того, являетесь ли вы владельцем авторского права на банку, страны, в которой вы живете, и вашей цели сделать это.
Ричард
2
Если это открытый исходный код, получите исходный код от разработчика. В противном случае «Любое соблюдение EULA будет оценено».
Эндрю Томпсон
Проверьте процион-декомпилятор. Загрузите JAR-файл для декомпиляции JAR-файлов. Я дал шаги ниже
нитин ангади

Ответы:

146

Используйте JD GUI . Откройте приложение, перетащите файл JAR в него.

adarshr
источник
6
Есть ли способ получить исходный код из .jar без JD GUI?
Zulqurnain Jutt
@ZulqurnainJutt использовать, как упомянуто в ответе @ elachancejar xf filename.jar
Арвинд Шридхарен
46

Вы можете извлечь файл JAR с помощью команды:

jar xf filename.jar

Ссылки: документация Oracle JAR

elachance
источник
19
Это равносильно тому , переименовав filename.jarв , filename.jar.zipа затем просто расстегивать его.
Матиас Биненс
28
Это не извлекает исходный код. Извлекает скомпилированный исходный код.
0xcaff
5
@caffinatedmonkey это извлекает исходный код, когда jar содержит файлы java, например, jar с именами, обычно заканчивающимися на «-sources». Он действительно извлекает только файлы .class, когда jar не содержит исходных файлов java.
edwardmp
37

Я считаю, что это можно сделать очень легко. Вы всегда можете извлечь исходные файлы (файлы Java) из jar-файла в zip-архив.

Шаги, чтобы получить источники файла фляги как почтовый индекс:

  1. Загрузите JAD с http://techieme.in/resources-needed/ и сохраните его в любом
    месте вашей системы.
  2. Перетащите банку, для которой вы хотите источники на JAD. 3 JAD UI откроется со всей структурой пакета в древовидном формате.
  3. Нажмите меню «Файл» и выберите «Сохранить источники банок».
  4. Это сохранит источники в виде почтового индекса с тем же именем, что и банка.

Надеюсь это поможет.

Ссылка не работает по какой-то причине, поэтому добавьте ссылку, откуда вы можете скачать JDGUI

дхарам
источник
1
@Nitesh ... Я буду публиковать ссылку, размещенную на моем сайте ... пожалуйста, загрузите ее оттуда
dharam
4
Версия в ссылке techieme работает прекрасно, спасибо!
DerStrom8
29

Ваш JAR может содержать источник и javadoc, и в этом случае вы можете просто использовать их jar xf my.jarдля извлечения.

В противном случае вы можете использовать декомпилятор, как указано в ответе adarshr:

Используйте JD GUI . Откройте приложение, перетащите файл JAR в него.

Мэтью Уиллис
источник
21
Обратите внимание, что файлы .jar на самом деле являются файлами .zip и могут быть открыты любым инструментом ZIP.
Крис Нава
11

Я знаю, что это старый вопрос Все еще думал, что это поможет кому-то

1) Перейдите в папку вашего файла JAR.

2) изменить его расширение на .zip.

3) Вы готовы к работе и можете легко извлечь его, просто дважды щелкнув по нему.

Примечание: я проверял это в MAC, он работает. Надеюсь, это будет работать и на Windows.

острому
источник
2
@JCodex, я делаю исследовательский проект по инструменту анализа настроений «ознание », и его jar действительно содержит файлы java и class. поэтому ваш комментарий не на 100% правдив. Я знаю, что он обычно содержит только .class, но не в этом случае
wired00
2
Ваше решение будет извлекать только файлы .class, а не исходный код.
Карлос Са
Кажется, JD-GUI - это многоплатформенный инструмент, который фактически декомпилирует код и показывает исходный код для классов во всех пакетах. Я попробовал это и мог получить исходный код в MacOS за секунду. У меня установлена ​​Java 8. Вы можете получить его на jd.benow.ca Не уверен, что он работает для больших проектов.
Карлос Са
1
нужен исходный код, который не предоставлен описанным вами способом
chiragchavda.ks
3

Сделайте следующее на вашем linux box, где работает java (если вам нравится терминальный способ работы)

cd ~
mkdir decompiled_code && cd decompiled_code
wget https://bitbucket.org/mstrobel/procyon/downloads/procyon-decompiler-0.5.36.jar
java -jar procyon-decompiler-0.5.36.jar /Path/to/your/jar -o .

ПРИМЕЧАНИЕ : как заметил @Richard, «это может быть незаконно в зависимости от того, являетесь ли вы владельцем авторских прав на банку, страны, в которой вы живете, и вашей цели сделать это».

нитин ангади
источник
Для конкретного файла класса вы можете сделать java -jar procyon-decompiler-0.5.36.jar package / of / the / java / class.class> className.java
nitin angadi
0

AndroChef Java Decompiler создает очень хороший код, который вы можете использовать непосредственно в своих проектах ...

Nik theGeeK
источник
-2

Выше инструменты извлекать банку. Также есть некоторые другие инструменты и команды для извлечения банку. Но AFAIK вы не можете получить код Java в случае, если код был запутан.

Вишал
источник
7
Величайший ответ
fnc12
-6

Предположим, что ваш JAR-файл находится в C: \ Documents and Settings \ mmeher \ Desktop \ jar, а имя JAR-файла - xx.jar, затем введите в командной строке две нижеуказанные команды:

1> cd C: \ Documents and Settings \ mmeher \ Desktop \ jar

2> jar xf xx.jar

Manas
источник
-6

-Конвертировать файл .jar в .zip (в Windows просто измените расширение) -Разархивировать папку .zip -Вы получите полные файлы .java

Паван Т
источник
3
Как небольшая заметка об этом методе ... Это правда, что JAR-файлы - это модные ZIP-файлы. Однако распаковка jar-файла, скорее всего, приведет к созданию файлов * .class, то есть «скомпилированных» java-файлов. Можно «декомпилировать» файлы классов в обычные файлы Java. Эта функциональность включена во многие IDE
Даниэль Эрнандес,
это просто разблокирует файлы классов
Harshil