Visualizzazione dei contenuti di un file .jar


226

Quale sarebbe il modo più semplice per visualizzare classi, metodi, proprietà, ecc. All'interno di un file jar? Sto cercando qualcosa di equivalente al molto utile Lutz Roeder .NET Reflector - per Java


12
Perché non accetti la risposta?
Sanghyun Lee,

4
@HughLee Il ragazzo che ha chiesto questo ha chiesto 8 anni fa . Ecco perché deve esserci un'accettazione automatica dopo che una risposta ha colpito 100 voti IMO
Kolob Canyon

@KolobCanyon vero, ma la risposta più votata è stata inviata lo stesso giorno in cui è stata chiesta questa domanda
Pranav A.

1
La risposta arriva da :https://superuser.com/a/808938/1045397 Puoi farlo con vim vim file_name.jar
byte mamba

Risposte:


280

Utilizzando JDK, jar -tfelencheremo i file nel vaso. javapti darà maggiori dettagli da un determinato file di classe.


3
@salvob Non è necessario il trattino come ci vuole dopo tarcon le opzioni obbligatorie.
Tom Hawtin: affronta il

2
Cordiali saluti, Potrebbe essere necessario aggiungere C:\Program Files\Java\jdk<version>\binal sistema o alla variabile di ambiente PATH dell'utente prima di poter utilizzare jarcome comando di sistema. (Dove <versione> è il numero di build della versione jdk. Check in C:\Program Files\Java)
Tezra

1
esempio javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC

per vedere il contenuto di un file non di classe (come manifest) ti piacerebbe fare qualcosa del genere: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

55

Di solito li apro con 7-Zip ... Permette almeno di vedere pacchetti, classi e risorse.
Se dovessi vedere metodi o campi, userei Jad ma ovviamente è meglio fare affidamento su (buono) JavaDoc ...

Ora, da qualche parte su SO sono stati menzionati alcuni plug-in Eclipse, per trovare in quale file jar si trova una classe, forse possono fare di più (cioè ciò che hai richiesto).

[EDIT] Riferimento alla discussione SO. Non quello che viene chiesto, ma in qualche modo correlato, quindi utile: Java: Come faccio a sapere quale file jar utilizzare con un nome di classe?


Il collegamento al sito Jad è stato rimosso quando l'URL è parcheggiato. Può ancora essere trovato su web.archive.org/web/20080106184313/http://www.kpdus.com/… ma Jad è obsoleto oggi, comunque.
PhiLho,

35

Quello che uso personalmente è JD-GUI. È un "decompilatore" gratuito, in quanto consente di visualizzare il codice sorgente, le classi e gli oggetti nelle classi, nonché di visualizzare la struttura dei file in un menu ad albero a sinistra. Tuttavia, non consente di modificare direttamente le classi.

Sito Web di JD-GUI: http://jd.benow.ca/


Funziona su più piattaforme mentre 7-Zip menzionato in un'altra risposta è specifico di Windows.
Brad Cupit,

Ho usato Archive Utility su OS X, ha funzionato bene. La maggior parte delle utility (un) zip dovrebbe funzionare, indipendentemente dalla piattaforma.
Greenonline,

23

Nel caso in cui qualcuno non lo sappia già, un file JAR è solo un file ZIP che contiene le classi, le risorse, ecc. Del programma e alcuni metadati. Puoi estrarne uno per vedere come viene assemblato.

Quindi sto usando un unzipcomando che è facile da ricordare e da usare.

unzip -l <jar-file-name>.jar

Ad esempio, se si dispone di un file jar con il nome test.jarpoi unzip -l test.jarelencherà tutto il contenuto del file jar.

Mentre tutte le altre risposte sono fantastiche, ma nella maggior parte di esse, dovresti usare alcuni software come 7 zipo JDKo qualche altro strumento di eclissi mentre questo non richiede di avere nessuno di questi grandi s / w e viene fornito di default in Linux e mac quindi è molto leggero e maneggevole da usare .

Puoi anche usare zipinfo <your jar file>. se il tuo sistema operativo lo supporta.


1
@Boop grazie per il suggerimento. lo aggiungerò alla mia risposta
Opster Elasticsearch Ninja

1
Se il file explorer supporta zip, anche la ridenominazione del jar in .zip funziona (ad esempio su Windows)
Rhayene,

16

Nomi dei metodi, campi, ecc.

Aggiungendo un vaso a un progetto in un IDE, in genere è possibile visualizzare metodi e nomi dei campi, ma non l'implementazione dettagliata. NetBeans può farlo, Eclipse probabilmente, IntelliJ probabilmente, ecc. È possibile sfogliare la struttura del vaso direttamente all'interno dell'IDE.

Solo i contenuti

Per qualsiasi cosa come la visualizzazione dei contenuti, è possibile utilizzare:

  • jar tvf jarfile.jar
  • winzip o qualsiasi altro strumento zip

Il codice sorgente

Per accedere al codice sorgente, è necessario utilizzare un decompilatore come JAD o uno dei suoi frontend o un altro decompilatore. Se il codice è offuscato, quindi ...



7
jar -tvf file_name.jar

sopra stamperà solo i nomi dei file .

Per visualizzare il contenuto dei file, è possibile estrarre i file in una cartella :

jar -xvf file_name.jar

questo decomprimerà il file jar e inserirà il contenuto nella stessa directory in cui lo stai eseguendo.

O in Windows rinominare il file .jar in .zip e quindi è possibile decomprimere per estrarre e visualizzare il contenuto del file jar. Poiché jar è internamente un file zip.


6

Usa WinRar . Si aprirà la struttura delle cartelle per te in modo intatto. Consente anche la modifica in archivio, preservando i percorsi.

Dopotutto, un file JAR è solo un archivio ZIP.


6

Se ti piace vedere cosa c'è dentro, rinomina semplicemente come prima opzione qui sotto.

  1. F2 & Rename to jarfile.zip // Usa qualsiasi decompressore ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

Se ho capito bene, vuoi vedere non solo le classi ma anche i metodi, le proprietà e così via. L'unico strumento che conosco che può farlo è Eclipse: se aggiungi un barattolo al project classpath, sarai in grado di sfogliare le sue classi con metodi e proprietà usando il solito explorer di pacchetti.

Comunque, questa è una buona idea per un buon strumento Java autonomo


Si noti che il vaso deve trovarsi nella cartella "Librerie referenziate", non solo "libs". E nel caso della libreria Apache Commons, non sfogliare source.jar, sfoglia l'originale e quindi allega l'origine quando Eclipse chiede.
Noumenon,

4

Jad è klunky e non è più mantenuto. Sono passato a "Java Decompiler" , che ha un'interfaccia utente intuitiva e supporto per nuove funzionalità linguistiche.

Ogni decompilatore che ho usato, tuttavia, si imbatte in codice che non viene decompilato correttamente. Per quelli, aiuta a capire il codice byte Java smontato prodotto dallo strumento JDK standard, javap .


3

Bene, un file jar è solo un file zip, quindi se decomprimilo (con la tua utility di decompressione preferita), ottieni tutti i file all'interno.

Se vuoi guardare all'interno dei file di classe per vedere i metodi, avrai bisogno di uno strumento per quello. Come menziona PhiLho, Eclipse è in grado di farlo (per impostazione predefinita), e penso che la maggior parte degli IDE Java siano in grado di farlo.


3

In Eclipse 3.4 fare

  1. Trascina il file jar in questione in un progetto Java. Viene visualizzata una copia del file jar.
  2. Fai clic con il tasto destro sul file jar e scegli "Build Path" -> "Aggiungi al Build Path".
  3. Il file Jar viene spostato nel nodo "Librerie di riferimento", dove può essere aperto e navigato nel riquadro Esplora progetti.

Se vedere anche il codice sorgente è un problema, apri una nuova domanda.

Per la navigazione a livello di file Jar (come file zip) uso 7zip che funziona molto bene e consente di vedere e modificare le voci, il che è ottimo per la risoluzione dei problemi.


3

Un modo per farlo è aprire la prospettiva in "Esplora pacchetti". In questo modo puoi vedere la struttura del tuo vaso con i dettagli della classe. Per questo controlla la cartella della libreria nel tuo progetto usando Esplora pacchetti.

Finestra >> Mostra vista >> Altro >> Java >> Esplora pacchetti

Un altro modo è, è possibile utilizzare JarPlug come plugin eclipse. Funziona in eclipse / springsource

http://jar-plug.sourceforge.net/


3

Se sei in Windows e stai usando PowerShell e stai cercando un file in un barattolo puoi fare:

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}

2

Puoi aprirli con la maggior parte delle utility di decompressione in questi giorni, quindi ottenere qualcosa come DJ Java Decompiler se vuoi visualizzare la fonte.



2

Il mio requisito era di visualizzare il contenuto di un file (come un file di proprietà) all'interno del vaso, senza estrarre effettivamente il vaso. Se qualcuno ha raggiunto questa discussione proprio come me, prova questo comando -

unzip -p myjar.jar myfile.txt

Questo ha funzionato bene per me!



1

Preferisco JAR Browser , ha una semplice interfaccia in cui è possibile sfogliare più JAR e cercare contemporaneamente una classe specifica su più JAR.


1

Eclipse 3.4 JDT

Non è il modo più veloce perché devi prima trascinarlo nella tua eclissi. Ma avrai la navigazione di classe java completa, anche con decompilazione abilitato.


1

Ho impostato l'azione predefinita in Windows su "Apri con WinZip". Ciò semplifica la gestione dei JAR come archivi. Puoi anche aggiungere / rimuovere file manualmente.


1

Questo Jar Explorer è abbastanza buono.
Supporta tre tipi di decompilatori: JD, Procyon e Fernflower.
Permette di cercare file e duplicati in qualsiasi archivio Java.
Inoltre, l'utente può modificare jar con i file D&D e modificare alcuni file non di classe. inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


Ti preghiamo di non pubblicare solo alcuni strumenti o librerie come risposta. Almeno dimostrare come risolve il problema nella risposta stessa.
Das_Geek,


0

Anche il tuo IDE dovrebbe supportare questo. Il mio IDE (SlickeEdit) lo chiama una "libreria di tag". Aggiungi semplicemente una libreria di tag per il file jar e dovresti essere in grado di sfogliare le classi e i metodi in modo gerarchico.






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.