Quel serait le moyen le plus simple de visualiser les classes, méthodes, propriétés, etc. dans un fichier jar? Je cherche quelque chose d’équivalent au très utile Lutz Roeder .NET Reflector - pour Java
En utilisant le JDK, jar -tf
listera les fichiers dans le jar javap
vous donnera plus de détails à partir d'un fichier de classe particulier.
Je les ouvre habituellement avec 7-Zip ... Cela permet au moins de voir les paquets, 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 est préférable de s’appuyer sur (bien) JavaDoc ...
Maintenant, quelque part sur SO a été mentionné quelques plug-ins Eclipse, pour trouver dans quel fichier jar une classe est située, peut-être qu'ils peuvent faire plus (c'est-à-dire ce que vous avez demandé).
[EDIT] Référence au thread SO. Ce n’est pas ce qui est demandé, mais plutôt ce qui est lié, donc utile: Java: Comment savoir quel fichier jar utiliser avec un nom de classe?
Ce que j'utilise personnellement, c'est JD-GUI. C'est un «décompilateur» gratuit, car il vous permet de voir le code source, les classes et les objets dans les classes, ainsi que de voir la structure du fichier dans un menu arborescent à gauche. Cependant, cela ne vous permet pas de modifier les classes directement.
Site Web de JD-GUI: http://jd.benow.ca/
En ajoutant un fichier jar à un projet dans un IDE, vous pouvez généralement voir les méthodes et les noms de champs, mais pas l'implémentation détaillée. NetBeans peut le faire, probablement Eclipse, probablement IntelliJ, etc. Vous pouvez parcourir la structure de jar directement dans l'EDI.
Pour tout ce qui concerne 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'une de ses interfaces 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 eshell d’emacs.
Informations complémentaires: https://docs.Oracle.com/javase/tutorial/deployment/jar/view.html
Utilisez WinRar. Il ouvrira la structure de 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 une archive Zip uniquement.
Utilisez unzip -l <jar-file-name>.jar
par exemple, si vous avez un fichier jar nommé test.jar
, unzip -l test.jar
listera le contenu du fichier jar.
Selon le manuel de la commande unzip
avec l'option -l.
liste des fichiers d'archive (format court). Les noms, fichier non compressé Les tailles, dates de modification et heures des fichiers spécifiés sont imprimé, avec les totaux pour tous les fichiers spécifiés. Si UnZip était compilé avec OS2_EAS défini, L'option -l répertorie également les colonnes pour les tailles des attributs étendus OS/2 stockés et des listes de contrôle d'accès OS/2. En outre, le commentaire zipfile et les commentaires de fichiers individuels (le cas échéant) sont affichés. Si un fichier était archivé à partir d'un système de fichiers à cas unique (par exemple, l'ancien système de fichiers FAT MS-DOS) et l'option -L a été donnée, le fichier. le nom de fichier est converti en minuscule et est précédé d'un caret (^)
Vous pouvez également utiliser zipinfo <your jar file>
. si votre système d'exploitation le supporte.
Si vous aimez voir ce qui se trouve à l'intérieur, renommez simplement la première option ci-dessous.
F2 & Rename to jarfile.Zip
// Utilisez n'importe quel fichier de 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 fichier jar au projet classpath, vous pourrez parcourir ses classes à l'aide de méthodes et de propriétés à l'aide de l'explorateur de packages habituel.
Quoi qu’il en soit, c’est une bonne idée pour un bon outil Java autonome.
Jad est klunky et n'est plus maintenu. Je suis passé à "Java Decompiler" , qui possède une interface utilisateur fluide et supporte les nouvelles fonctionnalités du langage.
Chaque décompilateur que j'ai utilisé, cependant, se heurte à du code qu'il ne décompile pas correctement. Pour ceux-là, il est utile de comprendre le code d'octet Java désassemblé 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 sont capables de cela.
Dans Eclipse 3.4 do
Si le fait de voir le code source pose é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 d’éditer les entrées, ce qui est très utile en cas de problème.
Si vous êtes dans Windows et que vous utilisez powershell et que vous recherchez un fichier dans un pot, vous pouvez faire:
jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}
Une façon de faire est d'ouvrir la perspective dans "Package Explorer". 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 la bibliothèque dans votre projet à l'aide de l'Explorateur de packages.
Fenêtre >> Afficher la vue >> Autre >> Java >> Explorateur de packages
JarPlug peut également être utilisé comme plug-in Eclipse. Cela fonctionne dans Eclipse/springsource
Vous pouvez les ouvrir avec la plupart des utilitaires de décompression ces jours-ci, puis obtenez simplement quelque chose comme DJ Java Decompiler si vous souhaitez afficher le source.
Je préfère Navigateur JAR , il possède une interface simple où vous pouvez parcourir plusieurs JAR et rechercher une classe spécifique sur plusieurs JAR simultanément.
Eclipse 3.4 JDT
Ce n'est pas le moyen le plus rapide, car vous devez d'abord le faire glisser dans votre Eclipse . Mais la navigation dans les classes Java est complète, même si la décompilation est activée.
Je pense que Java Decomplier est votre meilleure option, vous pouvez télécharger à partir d’ici: http://jd.benow.ca/Preview http://jd.benow.ca/img/screenshot17.png
J'ai défini l'action par défaut dans Windows sur "Ouvrir avec WinZip". Cela facilite la gestion des fichiers JAR en tant qu'archives. Vous pouvez même ajouter/supprimer des fichiers manuellement.
Mon exigence était de visualiser le contenu d'un fichier (comme un fichier de propriétés) à l'intérieur du fichier jar, sans extraire réellement le fichier. Si quelqu'un a atteint ce fil comme moi, essayez cette commande -
unzip -p myjar.jar myfile.txt
Cela a bien fonctionné pour moi!
J'utilise JarExplorer ou JarVisualizer .
Vous pouvez essayer JarSpy . J'utilise une version du plugin IDEA.
jar -tvf file_name.jar
ci-dessus ne contiendra que les noms des fichiers.
Pour afficher le contenu des fichiers, vous pouvez extraire les fichiers d’un dossier en:
jar -xvf file_name.jar
cela décompressera le fichier jar et mettra le contenu dans le même répertoire que celui où vous l'exécutez.
Ou, dans Windows, renommez le fichier .jar en .Zip, puis décompressez-le pour extraire et afficher le contenu du fichier jar. Comme jar est en interne un fichier Zip.
Aussi, vous pouvez utiliser Luyten - Un gui de décompression en Java Open Source
Vous pouvez essayer JarNavigator pour afficher et rechercher le contenu d'un fichier jar.
Votre IDE devrait également supporter 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.
Java -xf some-j.jar
va décompresser un fichier JAR.
Sur Mac, il y a Jarzilla