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

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


person hiba    schedule 24.02.2011    source источник
comment
Но учтите, что это может быть незаконным в зависимости от того, являетесь ли вы владельцем авторских прав на банку, страны, в которой вы живете, и вашей цели.   -  person Richard    schedule 24.02.2011
comment
Если это открытый исходный код, получите исходный код у разработчика. В противном случае будет приветствоваться любое соблюдение условий лицензионного соглашения.   -  person Andrew Thompson    schedule 24.02.2011
comment
Проверить декомпилятор процион. Загрузите это jar, чтобы декомпилировать файлы jar. Я дал шаги ниже   -  person nitin angadi    schedule 10.12.2019


Ответы (11)


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

person adarshr    schedule 24.02.2011
comment
есть ли способ получить исходный код из .jar без графического интерфейса JD? - person Zulqurnain Jutt; 07.10.2016
comment
@ZulqurnainJutt используйте, как указано в ответе @ elachance jar xf filename.jar - person Arvind Sridharan; 14.09.2018

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

jar xf filename.jar

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

person elachance    schedule 24.09.2012
comment
Это эквивалентно переименованию filename.jar в filename.jar.zip и его разархивированию. - person Mathias Bynens; 05.03.2014
comment
Это не извлекает исходный код. Он извлекает скомпилированный исходный код. - person 0xcaff; 22.07.2015
comment
@caffinatedmonkey он извлекает исходный код, когда jar содержит файлы java, например. jar-файлы с именами, обычно заканчивающимися -sources. Он действительно извлекает файлы .class только тогда, когда jar не содержит исходных файлов java. - person edwardmp; 02.05.2016

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

Шаги по получению исходных файлов jar-файла в виде zip-архива:

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

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

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

person dharam    schedule 19.05.2013
comment
@Nitesh ... Я опубликую ссылку, размещенную на моем веб-сайте ... пожалуйста, скачайте ее оттуда - person dharam; 28.08.2013
comment
Версия по ссылке techieme прекрасно работает, спасибо! - person DerStrom8; 28.07.2015
comment
После сохранения всех источников, когда я открываю файлы Java, все строки отображаются как закомментированные. Есть ли какие-нибудь настройки, чтобы это исправить? - person Anand; 23.07.2020

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

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

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

person Matthew Willis    schedule 24.02.2011
comment
Обратите внимание, что файлы .jar на самом деле являются файлами .zip и могут быть открыты любым инструментом ZIP. - person Chris Nava; 24.02.2011

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

1) Перейдите в папку с файлом jar.

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

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

Примечание. Я тестировал это на MAC, он работает. Надеюсь, он будет работать и с окнами.

person keen    schedule 12.02.2014
comment
@JCodex, я занимаюсь исследовательским проектом по инструменту анализа настроений, и его jar действительно содержит файлы классов и java. так что ваш комментарий не на 100% правдив. Я знаю, что обычно он содержит только .class, но не в этом случае, по крайней мере - person wired00; 04.03.2015
comment
Ваше решение будет извлекать только файлы .class, а не исходный код. - person Carlos Sá; 01.09.2017
comment
Кажется, JD-GUI - это многоплатформенный инструмент, который фактически декомпилирует код и показывает исходный код для классов во всех пакетах. Я попробовал и смог получить исходный код за секунду в MacOS. У меня установлена ​​Java 8. Вы можете получить его на jd.benow.ca. Не уверен, что это работает для больших проектов. - person Carlos Sá; 01.09.2017
comment
нужен исходный код, который не предоставляется описанным вами способом - person chiragchavda.ks; 28.06.2019

Сделайте следующее в своем Linux-окне, где работает 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, «это может быть незаконным в зависимости от того, являетесь ли вы владельцем авторских прав на банку, страны, в которой вы живете, и цели, с которой вы это делаете».

person nitin angadi    schedule 05.11.2019
comment
Для конкретного файла класса вы можете сделать java -jar procyon-decompiler-0.5.36.jar / Path / to / your / jar package / of / the / java / class.class ›className.java - person nitin angadi; 06.01.2021

Шаги по получению исходных файлов jar-файла в виде zip-архива:

  1. Загрузите JD-GUI со страницы http://java-decompiler.github.io/ и сохраните его в любом месте вашей системы.

  2. Перетащите jar-файл или откройте файл .jar, источники которого вы хотите разместить на JD.

  3. Откроется Java Decompiler со всей структурой пакета в древовидном формате.

  4. Щелкните меню «Файл» и выберите «Сохранить источники jar-файлов». Он сохранит исходники в виде zip-архива с тем же именем, что и jar.

Пример: -

введите описание изображения здесь

При необходимости мы можем использовать Eclipse IDE для разработчиков Java EE для обновления / извлечения кода.

В eclipse выберите Import Jar, а затем выберите jar, который вам нужен. Следуйте инструкциям на изображении ниже

введите описание изображения здесь

введите описание изображения здесь

person Prags    schedule 03.11.2020

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

person Nik theGeeK    schedule 03.05.2014

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

person Vishal    schedule 04.03.2014
comment
Величайший ответ - person fnc12; 08.07.2016

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

1> компакт-диск C: \ Documents and Settings \ mmeher \ Desktop \ jar

2> jar xf xx.jar

person Manas    schedule 31.01.2014

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

person Pavan T    schedule 12.05.2017
comment
Небольшое примечание об этом методе ... Это правда, что файлы jar представляют собой причудливые zip-файлы. Однако разархивирование jar-файла, скорее всего, приведет к появлению файлов * .class, то есть скомпилированных java-файлов. Можно декомпилировать файлы классов в обычные файлы java. Эта функция включена во многие IDE. - person Daniel Hernandez; 21.05.2018
comment
это просто разблокирует файлы классов - person Harshil; 21.02.2019