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 "/", ".")
}
}
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.
0 votes
@Alias le double éventuel indique comment trouver et obtenir un fichier à partir d'un jar, alors que la question porte sur l'obtention des noms de classes à l'intérieur d'un jar (éventuellement les classes de tous les paquets qu'il contient). Le lien dans la réponse d'ErikKaju pointe vers une solution possible utilisant
JarInputStream
yJarEntry
que je ne peux trouver dans aucune réponse de votre lien référencé.