Estrai il codice sorgente dal file .jar


172

Esiste un modo per estrarre il codice sorgente da un file .jar eseguibile (Java ME)?


3
Ma nota che farlo potrebbe essere illegale a seconda che tu sia il proprietario del copyright, il paese in cui vivi e il tuo scopo per farlo.
Richard,

2
Se è open source, ottieni il codice dallo sviluppatore. Altrimenti "Sarà apprezzato qualsiasi rispetto dell'EULA".
Andrew Thompson,

Controlla il decompilatore del processione. Scarica è jar per decompilare i file jar. Ho indicato i passaggi seguenti
nitin angadi

Risposte:


146

Usa la GUI di JD . Apri l'applicazione, trascina e rilascia il file JAR al suo interno.


6
c'è un modo per ottenere il codice sorgente da .jar senza JD GUI?
Zulqurnain Jutt,

@ZulqurnainJutt usa come menzionato nella risposta di @ elachancejar xf filename.jar
Arvind Sridharan

46

È possibile estrarre un file jar con il comando:

jar xf filename.jar

Riferimenti: documentazione JAR di Oracle


19
Ciò equivale a rinominare filename.jara filename.jar.zipe poi basta decomprimere esso.
Mathias Bynens,

28
Questo non estrae il codice sorgente. Estrae il codice sorgente compilato.
0xcaff,

5
@caffinatedmonkey estrae il codice sorgente quando il jar contiene file java, ad esempio barattoli con nomi che in genere terminano con "-sources". Effettivamente estrae solo i file .class quando il jar non contiene alcun file sorgente Java.
edwardmp,

37

Credo che questo possa essere fatto molto facilmente. È sempre possibile estrarre i file di origine (file Java) di un file jar in una zip.

I passaggi per ottenere fonti di un file jar come zip:

  1. Scarica JAD da http://techieme.in/resources-needed/ e salvalo in qualsiasi
    posizione sul tuo sistema.
  2. Trascina e rilascia il barattolo per il quale desideri i sorgenti sul JAD. 3 L'interfaccia utente di JAD si aprirà con tutta la struttura del pacchetto in un formato ad albero.
  3. Fai clic sul menu File e seleziona Salva fonti jar.
  4. Salverà le fonti come zip con lo stesso nome del vaso.

Spero che questo ti aiuti.

Il link è morto a causa di qualche motivo, quindi aggiungendo il link da cui è possibile scaricare JDGUI


1
@Nitesh ... Pubblicherò il link ospitato sul mio sito web ... per favore, scaricalo da lì
dharam

4
La versione nel link techieme funziona magnificamente, grazie!
DerStrom8,

29

Il JAR può contenere source e javadoc, nel qual caso puoi semplicemente utilizzarli jar xf my.jarper estrarli.

Altrimenti puoi usare un decompilatore come menzionato nella risposta di Adarshr:

Usa la GUI di JD . Apri l'applicazione, trascina e rilascia il file JAR al suo interno.


21
Si noti che i file .jar sono in realtà file .zip e possono essere aperti con qualsiasi strumento ZIP.
Chris Nava,

11

So che è una vecchia domanda. Pensavo ancora che avrebbe aiutato qualcuno

1) Vai alla cartella del tuo file jar.

2) cambia l'estensione in .zip.

3) Sei pronto per partire e puoi estrarlo facilmente semplicemente facendo doppio clic su di esso.

Nota: l' ho provato su MAC, funziona. Spero che funzioni anche su Windows.


2
@JCodex, sto facendo un progetto di ricerca sullo strumento di analisi del sentiment "opinionfinder" e il suo jar contiene effettivamente sia file Java che di classe. quindi il tuo commento non è vero al 100%. So che di solito conterrebbe solo .class ma non in questo caso almeno
wired00

2
La tua soluzione estrarrà solo i file .class e non il codice sorgente.
Carlos Sá,

Sembra che JD-GUI sia uno strumento multipiattaforma che effettivamente decompila il codice e mostra il codice sorgente per le classi in tutti i pacchetti. L'ho provato e ho potuto ottenere il codice sorgente in un secondo in MacOS. Ho Java 8 installato. Puoi scaricarlo su jd.benow.ca Non sono sicuro che funzioni per progetti di grandi dimensioni.
Carlos Sá,

1
necessita del codice sorgente che non viene fornito dal modo in cui è stato descritto
chiragchavda.ks,

3

Fai quanto segue sulla tua casella di Linux dove funziona java (se ti piace il modo terminale di fare le cose)

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 .

NOTA : come ha commentato @Richard "questo può essere illegale a seconda che tu sia il proprietario del copyright, il paese in cui vivi e il tuo scopo per farlo."


Per un file di classe specifico è possibile eseguire java -jar procyon-decompiler-0.5.36.jar pacchetto / of / the / java / class.class> className.java
nitin angadi

0

AndroChef Java Decompiler produce un ottimo codice che puoi usare direttamente nei tuoi progetti ...


-2

Gli strumenti sopra estraggono il barattolo. Inoltre ci sono alcuni altri strumenti e comandi per estrarre il vaso. Ma AFAIK non puoi ottenere il codice java nel caso in cui il codice sia stato offuscato.


7
La risposta più grande
fnc12

-6

supponiamo che il tuo file JAR sia in C: \ Documents and Settings \ mmeher \ Desktop \ jar e che il nome del file JAR sia xx.jar, quindi scrivi i seguenti due comandi nel prompt dei comandi:

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

2> jar xf xx.jar


-6

-Convertire il file .jar in .zip (in Windows basta cambiare l'estensione) -Sprimere la cartella .zip -Raggiungerai i file .java completi


3
Come piccola nota su questo metodo ... È vero che i file jar sono file zip di fantasia. Tuttavia, la decompressione di un jar produrrà molto probabilmente file * .class, ovvero file java "compilati". È possibile "decompilare" i file di classe in normali file java. Questa funzionalità è inclusa in molti IDE
Daniel Hernandez,

questo sbloccherà solo i file di classe
Harshil,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.