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
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
Risposte:
Utilizzando JDK, jar -tf
elencheremo i file nel vaso. javap
ti darà maggiori dettagli da un determinato file di classe.
tar
con le opzioni obbligatorie.
C:\Program Files\Java\jdk<version>\bin
al sistema o alla variabile di ambiente PATH dell'utente prima di poter utilizzare jar
come comando di sistema. (Dove <versione> è il numero di build della versione jdk. Check in C:\Program Files\Java
)
jar tf test.jar | grep MANIFEST
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?
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/
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 unzip
comando 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.jar
poi unzip -l test.jar
elencherà 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 zip
o JDK
o 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.
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.
Per qualsiasi cosa come la visualizzazione dei contenuti, è possibile utilizzare:
jar tvf jarfile.jar
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 ...
Estendendo la risposta di Tom Hawtin, puoi reindirizzare l'elenco per filtrare la classe o i file desiderati:
jar tf my-fat-jar-file.jar | grep filename
Questo dovrebbe funzionare su bash / zsh e simili, o su eshell di emacs.
Ulteriori informazioni: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
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.
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.
Se ti piace vedere cosa c'è dentro, rinomina semplicemente come prima opzione qui sotto.
F2 & Rename to jarfile.zip
// Usa qualsiasi decompressore ...
jar tvf jarfile.jar
jar tf jarfile.jar
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
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 .
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.
In Eclipse 3.4 fare
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.
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
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.
Bndtools fornisce un plug-in di visualizzazione JAR gratuito per Eclipse.
Aggiungi il sito di aggiornamento Eclipse e installa solo il visualizzatore.
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!
Penso che Java Decomplier sia la tua migliore opzione che puoi scaricare da qui: http://jd.benow.ca/
Preferisco JAR Browser , ha una semplice interfaccia in cui è possibile sfogliare più JAR e cercare contemporaneamente una classe specifica su più JAR.
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.
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.
Uso JarExplorer o JarVisualizer .
È possibile provare JarNavigator per visualizzare e cercare i contenuti di un file jar.
Inoltre puoi usare Luyten - An Open Source Java Decompiler Gui