Quelle serait la façon la plus simple d'afficher des classes, des méthodes, des propriétés, etc. dans un fichier jar? Je cherche quelque chose d'équivalent au très utile Lutz Roeder .NET Reflector - pour Java
@HughLee Le gars qui a posé cette question a demandé il y a 8 ans . C'est pourquoi il doit y avoir une acceptation automatique après qu'une réponse atteigne 100 votes positifs IMO
Kolob Canyon
@KolobCanyon true, mais la réponse la mieux notée a été soumise le même jour que celle-ci
@salvob Vous n'avez pas besoin du trait d'union comme il faut après taravec les options obligatoires.
Tom Hawtin - tackline
2
Pour info, vous devrez peut-être ajouter C:\Program Files\Java\jdk<version>\binà votre variable d'environnement système ou utilisateur PATH avant de pouvoir l'utiliser jarcomme commande système. (Où <version> est votre numéro de build de version jdk. Vérifiez-le C:\Program Files\Java)
Tezra
1
exemple javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC
pour voir le contenu d'un fichier non-classe (comme manifeste) vous voudriez faire quelque chose comme ceci: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC
55
Je les ouvre généralement avec 7-Zip ... Cela permet au moins de voir les packages, les classes et les ressources.
Si j'ai besoin de voir des méthodes ou des champs, j'utiliserais Jad mais bien sûr, il vaut mieux se fier à (bon) JavaDoc ...
Maintenant, quelque part sur SO a été mentionné certains plug-ins Eclipse, pour trouver dans quel fichier jar une classe se trouve, ils peuvent peut-être faire plus (c'est-à-dire ce que vous avez demandé).
Ce que j'utilise personnellement, c'est JD-GUI. Il s'agit d'un «décompilateur» gratuit, car il vous permet de voir le code source, les classes et les objets dans les classes, ainsi que la structure des fichiers dans un menu arborescent à gauche. Cependant, il ne vous permet pas de modifier directement les classes.
Cela fonctionne sur plusieurs plates-formes tandis que 7-Zip mentionné dans une autre réponse est spécifique à Windows.
Brad Cupit
J'ai utilisé Archive Utility sur OS X, a bien fonctionné. La plupart des utilitaires (dé) zip devraient fonctionner, quelle que soit la plate-forme.
Greenonline
23
Dans le cas où quelqu'un ne le sait pas déjà, un fichier JAR est juste un fichier ZIP qui contient les classes du programme, les ressources, etc., et certaines métadonnées. Vous pouvez en extraire un pour voir comment il est assemblé.
Par conséquent, j'utilise une unzipcommande facile à mémoriser et à utiliser.
unzip -l <jar-file-name>.jar
Par exemple, si vous avez un fichier jar avec nom, test.jaralors unzip -l test.jarlistera tout le contenu du fichier jar.
Bien que toutes les autres réponses soient excellentes, mais dans la plupart d'entre elles, vous devrez utiliser un logiciel comme 7 zipou JDKou un autre outil d'éclipse alors que cela ne vous oblige pas à avoir l'un de ces gros s / w et il vient par défaut sous linux et mac donc son très léger et pratique à utiliser .
Vous pouvez également utiliser zipinfo <your jar file>. si votre système d'exploitation le prend en charge.
@Boop merci pour la suggestion. l'ajouterai à ma réponse
Opster Elasticsearch Ninja
1
Si l'explorateur de fichiers prend en charge zip, renommer le pot en .zip fonctionne aussi (par exemple sur Windows)
Rhayene
16
Noms de méthodes, champs, etc.
En ajoutant un fichier jar à un projet dans un IDE, vous pouvez généralement voir les méthodes et les noms de champ, mais pas l'implémentation détaillée. NetBeans peut le faire, probablement Eclipse, probablement IntelliJ, etc. Vous pouvez parcourir la structure du pot directement dans l'EDI.
Juste le contenu
Pour quoi que ce soit, comme l'affichage du contenu, vous pouvez utiliser:
jar tvf jarfile.jar
winzip ou tout outil zip
Le code source
Pour accéder au code source, vous utiliseriez un décompilateur tel que JAD ou l'un de ses frontends ou un autre décompilateur. Si le code est obscurci, alors ...
Pour afficher le contenu des fichiers, vous pouvez extraire les fichiers dans un dossier en:
jar -xvf file_name.jar
cela décompressera le fichier jar et mettra le contenu dans le même répertoire où vous l'exécutez.
Ou dans Windows, renommez le fichier .jar en .zip, puis vous pouvez décompresser pour extraire et afficher le contenu du fichier jar. Comme le pot est en interne un fichier zip.
Utilisez WinRar . Il ouvrira la structure des dossiers pour vous de manière intacte. Permet également l'édition en archive, tout en préservant les chemins.
Après tout, un fichier JAR est uniquement une archive ZIP.
Si je comprends bien, vous voulez voir non seulement les classes mais aussi les méthodes, les propriétés, etc. Le seul outil que je connaisse qui puisse le faire est Eclipse - si vous ajoutez un bocal au projet classpath, vous pourrez parcourir ses classes avec des méthodes et des propriétés en utilisant l'explorateur de packages habituel.
Quoi qu'il en soit, c'est une bonne idée pour un bon outil Java autonome
Notez que le bocal doit être dans le dossier "Bibliothèques référencées", pas seulement "libs". Et dans le cas de la bibliothèque Apache Commons, vous ne parcourez pas le fichier source.jar, vous parcourez l'original, puis vous attachez la source lorsque Eclipse le demande.
Noumenon
4
Jad est maladroit et n'est plus entretenu. Je suis passé à "Java Decompiler" , qui a une interface utilisateur fluide et prend en charge de nouvelles fonctionnalités de langage.
Chaque décompilateur que j'ai utilisé, cependant, s'exécute dans du code qu'il ne réussit pas à décompiler. Pour ceux-ci, cela aide à comprendre le code d'octets Java démonté produit par l'outil JDK standard, javap .
Eh bien, un fichier jar est juste un fichier zip, donc si vous le décompressez (avec votre utilitaire de décompression préféré), vous obtenez tous les fichiers à l'intérieur.
Si vous voulez regarder à l'intérieur des fichiers de classe pour voir les méthodes, vous aurez besoin d'un outil pour cela. Comme PhiLho le mentionne, Eclipse est capable de le faire (par défaut), et je pense que la plupart des IDE Java en sont capables.
Faites glisser le fichier jar en question dans un projet Java. Une copie du fichier jar apparaît.
Faites un clic droit sur le fichier jar et choisissez "Build Path" -> "Add to Build Path".
Le fichier Jar est déplacé vers le nœud "Bibliothèques référencées", où il peut être ouvert et parcouru dans le volet Explorateur de projets.
Si voir le code source est également un problème, ouvrez une nouvelle question.
Pour la navigation au niveau du fichier Jar (en tant que fichier zip), j'utilise 7zip qui fonctionne très bien et permet de voir et de modifier des entrées, ce qui est excellent pour le dépannage.
Pour ce faire, vous pouvez ouvrir la perspective dans "Explorateur de packages". En faisant cela, vous pouvez voir la structure de votre pot avec les détails de la classe. Pour cela, vérifiez le dossier de bibliothèque de votre projet à l'aide de l'explorateur de packages.
Fenêtre >> Afficher la vue >> Autre >> Java >> Explorateur de packages
Une autre façon est que vous pouvez utiliser JarPlug en tant que plugin Eclipse. Cela fonctionne dans eclipse / springsource
Vous pouvez les ouvrir avec la plupart des utilitaires de décompression de nos jours, puis obtenir quelque chose comme DJ Java Decompiler si vous souhaitez afficher la source.
Mon exigence était de visualiser le contenu d'un fichier (comme un fichier de propriétés) à l'intérieur du pot, sans réellement extraire le pot. Si quelqu'un a atteint ce fil comme moi, essayez cette commande -
Je préfère le navigateur JAR , il a une interface simple où vous pouvez parcourir plusieurs JAR et rechercher une classe spécifique sur plusieurs JAR simultanément.
Ce n'est pas le moyen le plus rapide car vous devez d'abord le faire glisser dans votre éclipse. Mais vous aurez une navigation complète sur les classes Java, même avec la décompilation activée.
J'ai défini l'action par défaut dans les fenêtres sur "Ouvrir avec WinZip". Cela facilite la gestion des fichiers JAR en tant qu'archives. Vous pouvez même ajouter / supprimer des fichiers manuellement.
Ce Jar Explorer est assez bon.
Prend en charge trois types de décompilateurs: JD, Procyon et Fernflower.
Permet de rechercher des fichiers et des doublons dans n'importe quelle archive java.
L'utilisateur peut également modifier le fichier jar par des fichiers D&D et éditer certains fichiers non-classe.
Veuillez ne pas simplement poster un outil ou une bibliothèque comme réponse. Démontrez au moins comment il résout le problème dans la réponse elle-même.
Das_Geek
0
Vous pouvez essayer JarSpy . Il existe une version plugin IDEA que j'utilise.
Votre IDE devrait également prendre en charge cela. Mon IDE (SlickeEdit) l'appelle une «bibliothèque de balises». Ajoutez simplement une bibliothèque de balises pour le fichier jar, et vous devriez pouvoir parcourir les classes et les méthodes de manière hiérarchique.
Réponses:
En utilisant le JDK, listera
jar -tf
les fichiers dans le pot.javap
vous donnera plus de détails sur un fichier de classe particulier.la source
tar
avec les options obligatoires.C:\Program Files\Java\jdk<version>\bin
à votre variable d'environnement système ou utilisateur PATH avant de pouvoir l'utiliserjar
comme commande système. (Où <version> est votre numéro de build de version jdk. Vérifiez-leC:\Program Files\Java
)jar tf test.jar | grep MANIFEST
Je les ouvre généralement avec 7-Zip ... Cela permet au moins de voir les packages, les classes et les ressources.
Si j'ai besoin de voir des méthodes ou des champs, j'utiliserais Jad mais bien sûr, il vaut mieux se fier à (bon) JavaDoc ...
Maintenant, quelque part sur SO a été mentionné certains plug-ins Eclipse, pour trouver dans quel fichier jar une classe se trouve, ils peuvent peut-être faire plus (c'est-à-dire ce que vous avez demandé).
[EDIT] Référence au thread SO. Pas ce qui est demandé, mais en quelque sorte lié, donc utile: Java: Comment savoir quel fichier jar utiliser en fonction d'un nom de classe?
la source
Ce que j'utilise personnellement, c'est JD-GUI. Il s'agit d'un «décompilateur» gratuit, car il vous permet de voir le code source, les classes et les objets dans les classes, ainsi que la structure des fichiers dans un menu arborescent à gauche. Cependant, il ne vous permet pas de modifier directement les classes.
Site Web de JD-GUI: http://jd.benow.ca/
la source
Par conséquent, j'utilise une
unzip
commande facile à mémoriser et à utiliser.unzip -l <jar-file-name>.jar
Par exemple, si vous avez un fichier jar avec nom,
test.jar
alorsunzip -l test.jar
listera tout le contenu du fichier jar.Bien que toutes les autres réponses soient excellentes, mais dans la plupart d'entre elles, vous devrez utiliser un logiciel comme
7 zip
ouJDK
ou un autre outil d'éclipse alors que cela ne vous oblige pas à avoir l'un de ces gros s / w et il vient par défaut sous linux et mac donc son très léger et pratique à utiliser .Vous pouvez également utiliser
zipinfo <your jar file>
. si votre système d'exploitation le prend en charge.la source
Noms de méthodes, champs, etc.
En ajoutant un fichier jar à un projet dans un IDE, vous pouvez généralement voir les méthodes et les noms de champ, mais pas l'implémentation détaillée. NetBeans peut le faire, probablement Eclipse, probablement IntelliJ, etc. Vous pouvez parcourir la structure du pot directement dans l'EDI.
Juste le contenu
Pour quoi que ce soit, comme l'affichage du contenu, vous pouvez utiliser:
jar tvf jarfile.jar
Le code source
Pour accéder au code source, vous utiliseriez un décompilateur tel que JAD ou l'un de ses frontends ou un autre décompilateur. Si le code est obscurci, alors ...
la source
En étendant la réponse de Tom Hawtin, vous pouvez diriger la liste pour filtrer la classe ou les fichiers souhaités:
jar tf my-fat-jar-file.jar | grep filename
Cela devrait fonctionner sur bash / zsh et similaires, ou sur eshell d'emacs.
Informations supplémentaires: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
la source
ci-dessus n'imprimera que les noms des fichiers .
Pour afficher le contenu des fichiers, vous pouvez extraire les fichiers dans un dossier en:
cela décompressera le fichier jar et mettra le contenu dans le même répertoire où vous l'exécutez.
Ou dans Windows, renommez le fichier .jar en .zip, puis vous pouvez décompresser pour extraire et afficher le contenu du fichier jar. Comme le pot est en interne un fichier zip.
la source
Utilisez WinRar . Il ouvrira la structure des dossiers pour vous de manière intacte. Permet également l'édition en archive, tout en préservant les chemins.
Après tout, un fichier JAR est uniquement une archive ZIP.
la source
Si vous aimez voir ce qu'il y a à l'intérieur, renommez simplement la première option ci-dessous.
F2 & Rename to jarfile.zip
// Utilisez une décompression ...jar tvf jarfile.jar
jar tf jarfile.jar
la source
Si je comprends bien, vous voulez voir non seulement les classes mais aussi les méthodes, les propriétés, etc. Le seul outil que je connaisse qui puisse le faire est Eclipse - si vous ajoutez un bocal au projet classpath, vous pourrez parcourir ses classes avec des méthodes et des propriétés en utilisant l'explorateur de packages habituel.
Quoi qu'il en soit, c'est une bonne idée pour un bon outil Java autonome
la source
Jad est maladroit et n'est plus entretenu. Je suis passé à "Java Decompiler" , qui a une interface utilisateur fluide et prend en charge de nouvelles fonctionnalités de langage.
Chaque décompilateur que j'ai utilisé, cependant, s'exécute dans du code qu'il ne réussit pas à décompiler. Pour ceux-ci, cela aide à comprendre le code d'octets Java démonté produit par l'outil JDK standard, javap .
la source
Eh bien, un fichier jar est juste un fichier zip, donc si vous le décompressez (avec votre utilitaire de décompression préféré), vous obtenez tous les fichiers à l'intérieur.
Si vous voulez regarder à l'intérieur des fichiers de classe pour voir les méthodes, vous aurez besoin d'un outil pour cela. Comme PhiLho le mentionne, Eclipse est capable de le faire (par défaut), et je pense que la plupart des IDE Java en sont capables.
la source
Dans Eclipse 3.4, faites
Si voir le code source est également un problème, ouvrez une nouvelle question.
Pour la navigation au niveau du fichier Jar (en tant que fichier zip), j'utilise 7zip qui fonctionne très bien et permet de voir et de modifier des entrées, ce qui est excellent pour le dépannage.
la source
Pour ce faire, vous pouvez ouvrir la perspective dans "Explorateur de packages". En faisant cela, vous pouvez voir la structure de votre pot avec les détails de la classe. Pour cela, vérifiez le dossier de bibliothèque de votre projet à l'aide de l'explorateur de packages.
Fenêtre >> Afficher la vue >> Autre >> Java >> Explorateur de packages
Une autre façon est que vous pouvez utiliser JarPlug en tant que plugin Eclipse. Cela fonctionne dans eclipse / springsource
http://jar-plug.sourceforge.net/
la source
Si vous êtes dans Windows et utilisez PowerShell et que vous recherchez un fichier dans un bocal, vous pouvez faire:
la source
Vous pouvez les ouvrir avec la plupart des utilitaires de décompression de nos jours, puis obtenir quelque chose comme DJ Java Decompiler si vous souhaitez afficher la source.
la source
Bndtools fournit un plugin de visualisation JAR gratuit pour Eclipse.
Ajoutez le site de mise à jour Eclipse et installez uniquement la visionneuse.
la source
Mon exigence était de visualiser le contenu d'un fichier (comme un fichier de propriétés) à l'intérieur du pot, sans réellement extraire le pot. Si quelqu'un a atteint ce fil comme moi, essayez cette commande -
Cela a bien fonctionné pour moi!
la source
Je pense que Java Decomplier est votre meilleure option que vous pouvez télécharger à partir d'ici: http://jd.benow.ca/
la source
Je préfère le navigateur JAR , il a une interface simple où vous pouvez parcourir plusieurs JAR et rechercher une classe spécifique sur plusieurs JAR simultanément.
la source
Eclipse 3.4 JDT
Ce n'est pas le moyen le plus rapide car vous devez d'abord le faire glisser dans votre éclipse. Mais vous aurez une navigation complète sur les classes Java, même avec la décompilation activée.
la source
J'ai défini l'action par défaut dans les fenêtres sur "Ouvrir avec WinZip". Cela facilite la gestion des fichiers JAR en tant qu'archives. Vous pouvez même ajouter / supprimer des fichiers manuellement.
la source
Ce Jar Explorer est assez bon.
Prend en charge trois types de décompilateurs: JD, Procyon et Fernflower.
Permet de rechercher des fichiers et des doublons dans n'importe quelle archive java.
L'utilisateur peut également modifier le fichier jar par des fichiers D&D et éditer certains fichiers non-classe.
la source
Vous pouvez essayer JarSpy . Il existe une version plugin IDEA que j'utilise.
la source
Votre IDE devrait également prendre en charge cela. Mon IDE (SlickeEdit) l'appelle une «bibliothèque de balises». Ajoutez simplement une bibliothèque de balises pour le fichier jar, et vous devriez pouvoir parcourir les classes et les méthodes de manière hiérarchique.
la source
Sur Mac, il y a Jarzilla
la source
J'utilise JarExplorer ou JarVisualizer .
la source
Vous pouvez essayer JarNavigator pour afficher et rechercher le contenu d'un fichier jar.
la source
java -xf some-j.jar
va décompresser un fichier JAR.la source
Vous pouvez également utiliser Luyten - Un Open Source Java Decompiler Gui
la source