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


172

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


3
Но учтите, что это может быть незаконно в зависимости от того, являетесь ли вы владельцем авторского права на банку, страны, в которой вы живете, и вашей цели сделать это.
Ричард

2
Если это открытый исходный код, получите исходный код от разработчика. В противном случае «Любое соблюдение EULA будет оценено».
Эндрю Томпсон

Проверьте процион-декомпилятор. Загрузите JAR-файл для декомпиляции JAR-файлов. Я дал шаги ниже
нитин ангади

Ответы:


146

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


6
Есть ли способ получить исходный код из .jar без JD GUI?
Zulqurnain Jutt

@ZulqurnainJutt использовать, как упомянуто в ответе @ elachancejar xf filename.jar
Арвинд Шридхарен

46

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

jar xf filename.jar

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


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 создает очень хороший код, который вы можете использовать непосредственно в своих проектах ...


-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


-6

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


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

это просто разблокирует файлы классов
Harshil
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.