Wyodrębnij kod źródłowy z pliku .jar


172

Czy istnieje sposób na wyodrębnienie kodu źródłowego z wykonywalnego pliku .jar (Java ME)?


3
Pamiętaj jednak, że zrobienie tego może być nielegalne w zależności od tego, czy jesteś właścicielem praw autorskich do słoika, kraju, w którym mieszkasz i celu, w jakim to robisz.
Richard

2
Jeśli jest to oprogramowanie typu open source, pobierz je od programisty. W przeciwnym razie „Każda zgodność z EULA będzie mile widziana”.
Andrew Thompson,

Sprawdź dekompilator procyon. Pobierz to jar, aby zdekompilować pliki jar.
Podałem

Odpowiedzi:


146

Użyj JD GUI . Otwórz aplikację, przeciągnij i upuść do niej plik JAR.


6
czy istnieje sposób na pobranie kodu źródłowego z .jar bez JD GUI?
Zulqurnain Jutt

Użycie @ZulqurnainJutt, jak wspomniano w odpowiedzi @ elachancejar xf filename.jar
Arvind Sridharan

46

Możesz wyodrębnić plik jar za pomocą polecenia:

jar xf filename.jar

Źródła: dokumentacja Oracle JAR


18
Jest to równoważne zmianie nazwy filename.jarna, filename.jar.zipa następnie rozpakowaniu.
Mathias Bynens,

27
To nie wyodrębnia kodu źródłowego. Wyodrębnia skompilowany kod źródłowy.
0xcaff

5
@caffinatedmonkey wyodrębnia kod źródłowy, gdy jar zawiera pliki java, np. słoiki o nazwach kończących się zazwyczaj na „-sources”. Rzeczywiście wyodrębnia pliki .class tylko wtedy, gdy jar nie zawiera żadnych plików źródłowych Java.
edwardmp

37

Uważam, że można to zrobić bardzo łatwo. Zawsze możesz wyodrębnić pliki źródłowe (pliki Java) pliku jar do pliku ZIP.

Kroki, aby pobrać źródła pliku jar jako plik ZIP:

  1. Pobierz JAD ze strony http://techieme.in/resources-needed/ i zapisz go w dowolnym
    miejscu w systemie.
  2. Przeciągnij i upuść słoik, dla którego chcesz umieścić źródła, na JAD. 3 JAD UI otworzy się z całą strukturą pakietu w formacie drzewa.
  3. Kliknij menu Plik i wybierz zapisz źródła jar.
  4. Zapisuje źródła jako zip o tej samej nazwie co jar.

Mam nadzieję że to pomoże.

Link jest martwy z jakiegoś powodu, więc dodaj link, z którego możesz pobrać JDGUI


1
@Nitesh ... Będę zamieszczał link hostowany na mojej stronie internetowej ... proszę go pobrać stamtąd
dharam

4
Wersja w linku techieme działa pięknie, dziękuję!
DerStrom8

29

Twój plik JAR może zawierać źródła i javadoc, w takim przypadku możesz po prostu użyć ich jar xf my.jardo wyodrębnienia.

W przeciwnym razie możesz użyć dekompilatora, jak wspomniano w odpowiedzi adarshr:

Użyj JD GUI . Otwórz aplikację, przeciągnij i upuść do niej plik JAR.


21
Zwróć uwagę, że pliki .jar to w rzeczywistości pliki .zip i można je otwierać za pomocą dowolnego narzędzia ZIP.
Chris Nava,

11

Wiem, że to stare pytanie Wciąż myślałem, że to komuś pomoże

1) Przejdź do folderu z plikiem jar.

2) zmień jego rozszerzenie na .zip.

3) Jesteś gotowy i możesz go łatwo wyodrębnić, klikając go dwukrotnie.

Uwaga: przetestowałem to w MAC, działa. Miejmy nadzieję, że będzie działać również w systemie Windows.


2
@JCodex, prowadzę projekt badawczy dotyczący narzędzia do analizy nastrojów „Opinionfinder”, a jego jar rzeczywiście zawiera zarówno pliki java ORAZ klasy. więc twój komentarz nie jest w 100% prawdziwy. Wiem, że zwykle zawierałby tylko .class, ale nie w tym przypadku przynajmniej
wired00

2
Twoje rozwiązanie wyodrębni tylko pliki .class, a nie kod źródłowy.
Carlos Sá

Wygląda na to, że JD-GUI jest narzędziem wieloplatformowym, które faktycznie dekompiluje kod i wyświetla kod źródłowy klas we wszystkich pakietach. Wypróbowałem to i mogłem uzyskać kod źródłowy w sekundę w MacOS. Mam zainstalowaną Javę 8. Możesz go pobrać na jd.benow.ca Nie jestem pewien, czy działa w przypadku dużych projektów.
Carlos Sá

1
potrzebujesz kodu źródłowego, który nie jest dostarczony w sposób opisany przez ciebie
chiragchavda.ks

3

Wykonaj następujące czynności na swoim Linuksie, gdzie działa java (jeśli lubisz terminalowy sposób robienia rzeczy)

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 .

UWAGA : jak skomentował @Richard „może to być nielegalne w zależności od tego, czy posiadasz prawa autorskie do słoika, kraju, w którym mieszkasz i celu, w jakim to robisz”.


Dla określonego pliku klasy możesz zrobić java -jar procyon-decompiler-0.5.36.jar pakiet / of / the / java / class.class> className.java
nitin angadi

0

AndroChef Java Decompiler tworzy bardzo dobry kod, którego możesz używać bezpośrednio w swoich projektach ...


-2

Nad narzędziami wyjmij słoik. Istnieją również inne narzędzia i polecenia do wyodrębnienia słoika. Ale AFAIK, nie możesz uzyskać kodu java w przypadku, gdy kod został zaciemniony.


7
Najlepsza odpowiedź
fnc12

-6

załóżmy, że plik JAR znajduje się w C: \ Documents and Settings \ mmeher \ Desktop \ jar, a nazwa pliku JAR to xx.jar, a następnie wpisz poniższe dwa polecenia w wierszu poleceń:

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

2> jar xf xx.jar


-6

-Ukryj plik .jar do .zip (w systemie Windows po prostu zmień rozszerzenie) -Rozpakuj folder .zip -Otrzymasz kompletne pliki .java


3
Mała uwaga na temat tej metody ... Prawdą jest, że pliki jar to fantazyjne pliki zip. Jednak rozpakowanie pliku jar najprawdopodobniej przyniesie pliki * .class, czyli „skompilowane” pliki java. Możliwe jest „dekompilowanie” plików klas do zwykłych plików Java. Ta funkcjonalność jest zawarta w wielu IDE
Daniel Hernandez

to tylko odblokuje pliki klas
Harshil,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.