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.