156 votes

Comment obtenir les noms des classes dans un fichier jar ?

J'ai un fichier JAR et j'ai besoin d'obtenir le nom de toutes les classes dans ce fichier JAR. Comment puis-je le faire ?

J'ai cherché sur Google et j'ai vu quelque chose à propos de JarFile ou de Java. ClassLoader mais je n'ai aucune idée de la façon de le faire.

0 votes

Utilisez-vous un IDE ? Il s'affichera automatiquement si vous en utilisez un.

0 votes

J'utilise Eclipse, mais j'ai besoin de faire cela avec du code.

0 votes

@LuiggiMendoza - Le duplicata potentiel a des réponses avec des exemples ainsi que des ressources pour la documentation. La recherche d'un de ces noms de classe + exemple donnera plusieurs résultats utiles.

7voto

Achyuth Points 1421

Vous pouvez utiliser le

jar tf example.jar

4voto

Amit Khandelwal Points 4531

La commande ci-dessous énumérera le contenu d'un bocal fichier.

commande :- unzip -l jarfilename.jar .

échantillon o/p :-

Archive: hello-world.jar Length Date Time Name --------- ---------- ----- ---- 43161 10-18-2017 15:44 hello-world/com/ami/so/search/So.class 20531 10-18-2017 15:44 hello-world/com/ami/so/util/SoUtil.class --------- ------- 63692 2 files

Selon le manuel de unzip

-l liste les fichiers d'archives (format court). Les noms, les tailles des fichiers non compressés et les dates et heures de modification des fichiers spécifiés sont spécifiés sont imprimés, ainsi que les totaux de tous fichiers spécifiés. Si UnZip a été compilé avec OS2_EAS défini, l'option -l liste également les colonnes pour les tailles des attributs étendus OS/2 OS/2 (EA) et des listes de contrôle d'accès OS/2 (ACL). d'accès OS/2 (ACL). En outre, le commentaire du fichier zip et les commentaires des fichiers individuels (le cas échéant) sont affichés. Si un fichier a été archivé à partir d'un système de fichiers à cas unique (par exemple, l'ancien système de fichiers MS-DOS FAT) et que l'option -L a été donnée, le nom du fichier est converti en minuscules et est minuscules et est préfixé d'une caret (^).

4voto

Rajiv Singh Points 24

Mac OS : Sur Terminal :

vim <your jar location>

after jar gets opened, press / and pass your class name and hit enter

3voto

Utilisez ce bash script :

#!/bin/bash

for VARIABLE in *.jar
do
   jar -tf $VARIABLE |grep "\.class"|awk -v arch=$VARIABLE '{print arch ":" $4}'|sed 's/\//./g'|sed 's/\.\.//g'|sed 's/\.class//g'
done

ceci listera les classes dans les jars de votre répertoire sous la forme :

file1.jar:fullyqualifiedclassName
file1.jar:fullyqualifiedclassName
file1.jar:fullyqualifiedclassName
file1.jar:fullyqualifiedclassName
file2.jar:fullyqualifiedclassName
file2.jar:fullyqualifiedclassName
file2.jar:fullyqualifiedclassName

Exemple de sortie :

commons-io.jar:org.apache.commons.io.ByteOrderMark
commons-io.jar:org.apache.commons.io.Charsets
commons-io.jar:org.apache.commons.io.comparator.AbstractFileComparator
commons-io.jar:org.apache.commons.io.comparator.CompositeFileComparator
commons-io.jar:org.apache.commons.io.comparator.DefaultFileComparator
commons-io.jar:org.apache.commons.io.comparator.DirectoryFileComparator
commons-io.jar:org.apache.commons.io.comparator.ExtensionFileComparator
commons-io.jar:org.apache.commons.io.comparator.LastModifiedFileComparator

Sous Windows, vous pouvez utiliser powershell :

Get-ChildItem -File -Filter *.jar |
ForEach-Object{
    $filename = $_.Name
    Write-Host $filename
    $classes = jar -tf $_.Name |Select-String -Pattern '.class' -CaseSensitive -SimpleMatch
    ForEach($line in $classes) {
       write-host $filename":"(($line -replace "\.class", "") -replace "/", ".")
    }
}

2voto

Abhimanyu Dutta Points 29

Vous pouvez essayer ceci :

unzip -v /your/jar.jar

Cela ne sera utile que si votre jar est exécutable, c'est-à-dire que dans le manifeste vous avez défini une classe comme classe principale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X