Витяг вихідного коду з файлу .jar


172

Чи є спосіб витягнути вихідний код з виконуваного файлу .jar (Java ME)?


3
Але зауважте, що це може бути незаконним, залежно від того, чи є у вас авторські права на банку, країна, в якій ви живете, і від вашої мети.
Річард

2
Якщо він відкритий, отримайте джерело від розробника. Інакше "Будь-яке дотримання EULA буде оцінено".
Ендрю Томпсон,

Перевірте проціонний декомпілятор. Завантажте його jar для декомпіляції файлів jar. Я дав кроки нижче
nitin angadi

Відповіді:


146

Використовуйте JD GUI . Відкрийте програму, перетягніть у неї файл JAR.


6
чи є спосіб отримати вихідний код з .jar без JD GUI?
Zulqurnain Jutt

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

46

Ви можете витягти файл jar із командою:

jar xf filename.jar

Посилання: Документація JAR Oracle


18
Це рівнозначно тому , перейменувавши filename.jarв , filename.jar.zipа потім просто розстібати його.
Матіас Байненс

27
Це не витягує вихідний код. Він витягує складений вихідний код.
0xcaff

5
@caffinatedmonkey він витягує вихідний код, коли jar містить файли java, наприклад, банки з іменами, які зазвичай закінчуються на "-sources". Він дійсно вилучає лише файли .class, коли jar не містить жодних вихідних файлів Java.
edwardmp

37

Я вважаю, що це можна зробити дуже легко. Ви завжди можете витягнути вихідні файли (файли Java) файлу jar в zip.

Кроки для отримання джерел файлу jar у вигляді zip:

  1. Завантажте JAD з http://techieme.in/resources-needed/ і збережіть його в будь-якому
    місці вашої системи.
  2. Перетягніть банку, для якої потрібно джерела, на JAD. 3 JAD UI відкриється зі всією структурою пакету у деревньому форматі.
  3. Клацніть на меню Файл і виберіть збереження джерел банку.
  4. Це збереже джерела як блискавку з тією ж назвою, що і jar.

Сподіваюся, це допомагає.

Посилання є мертвою через певну причину, тому додаючи посилання, звідки ви можете завантажити JDGUI


1
@Nitesh ... Я розміщую посилання, розміщене на моєму веб-сайті ... завантажте його звідти
dharam

4
Версія у посиланні techieme прекрасно працює, дякую!
DerStrom8

29

Ваш JAR може містити джерело та javadoc, тоді ви можете просто використовувати jar xf my.jar їх витягнути.

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

Використовуйте JD GUI . Відкрийте програму, перетягніть у неї файл JAR.


21
Зауважте, що .jar файли - це фактично .zip-файли і їх можна відкрити будь-яким інструментом ZIP.
Кріс Нава

11

Я знаю, що це давнє запитання. Я все ще думав, що це комусь допоможе

1) Перейдіть у папку вашого банку.

2) змінити розширення на .zip.

3) Ви добре піти і можете легко витягнути його, просто двічі клацнувши по ньому.

Примітка: я тестував це в MAC, він працює. Сподіваємось, він буде працювати і на вікнах.


2
@JCodex, я займаюся дослідницьким проектом щодо інструменту аналізу настроїв "думка пошуку", і його jar дійсно містить як файли Java, так і класу. тому ваш коментар не на 100% правдивий. Я знаю, що зазвичай він містить лише .class, але не в цьому випадку принаймні
wired00

2
Ваше рішення буде витягувати лише файли .class, а не вихідний код.
Карлос Са

Здається, JD-GUI - це багатоплатформенний інструмент, який фактично декомпілює код і показує вихідний код для класів у всіх пакетах. Я спробував це і міг отримати вихідний код за секунду в MacOS. У мене встановлена ​​Java 8. Ви можете отримати його на jd.benow.ca Не впевнений, чи працює він для великих проектів.
Carlos Sá

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: \ Документи та параметри \ mmeher \ Desktop \ jar, а ім'я файлу JAR - xx.jar, тоді в командному рядку напишіть дві нижче команди:

1> cd C: \ Документи та налаштування \ mmeher \ Desktop \ jar

2> jar xf xx.jar


-6

-Зверніть .jar файл у .zip (У Windows просто змініть розширення) -Разкручуйте папку .zip -Ви отримаєте повний .java-файли


3
Як невелика примітка щодо цього методу ... Це правда, що jar-файли - це фантазійні zip-файли. Однак, розпакувавши банку, швидше за все, вийде * .class файли, тобто "складені" файли Java. Можливо "декомпілювати" файли класу до звичайних файлів Java. Ця функціональність включена у багато ІДЕ
Даніель Ернандес

це просто розблокує файли класу
Харшил,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.