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
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
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.
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'utiliser jar
comme commande système. (Où <version> est votre numéro de build de version jdk. Vérifiez-le C:\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?
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/
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 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
alors unzip -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
ou JDK
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.
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.
Pour quoi que ce soit, comme l'affichage du contenu, vous pouvez utiliser:
jar tvf jarfile.jar
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 ...
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
jar -tvf file_name.jar
ci-dessus n'imprimera que les noms des fichiers .
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 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
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
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.
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.
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.
Bndtools fournit un plugin de visualisation JAR gratuit pour Eclipse.
Ajoutez le site de mise à jour Eclipse et installez uniquement la visionneuse.
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 -
unzip -p myjar.jar myfile.txt
Cela a bien fonctionné pour moi!
Je pense que Java Decomplier est votre meilleure option que vous pouvez télécharger à partir d'ici: http://jd.benow.ca/
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.
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.
J'utilise JarExplorer ou JarVisualizer .
Vous pouvez essayer JarNavigator pour afficher et rechercher le contenu d'un fichier jar.
Vous pouvez également utiliser Luyten - Un Open Source Java Decompiler Gui