Comment obtenir des noms de classes à l'intérieur d'un fichier jar?
J'ai un fichier JAR et j'ai besoin de connaître le nom de toutes les classes à l'intérieur de ce fichier JAR. Comment puis-je le faire?
Je l'ai googlé et a vu quelque chose à propos de Jarfiles ou Java ClassLoader
mais je n'ai aucune idée de comment le faire.
- Êtes-vous à l'aide de certains IDE?Comme il sera automatiquement affiché si vous en utilisez un.
- Je suis à l'aide d'Eclipse, mais j'ai besoin de faire cela avec un code.
- Le doublon potentiel a des réponses avec des exemples ainsi que des ressources pour la documentation. Recherche pour l'un de ces noms de classe + exemple donner quelques résultats utiles.
- le double possible unis, comment trouver et obtenir un fichier à partir d'un pot, alors que la question est au sujet d'obtenir les noms de classe à l'intérieur d'un bocal (éventuellement les classes de tous les paquets à l'intérieur). Le lien dans ErikKaju la réponse de points pour une solution possible à l'aide de
JarInputStream
etJarEntry
classes que je ne peux pas trouver dans l'une réponse de votre lien. - Utilisez simplement
jar tf
Vous devez vous connecter pour publier un commentaire.
Malheureusement, Java ne fournit pas un moyen facile de la liste des classes dans les "indigènes" JRE. Que vous laisse avec quelques options: (a) pour tout fichier JAR, vous pouvez lister les entrées à l'intérieur de ce fichier JAR, trouver le
.class
fichiers, puis déterminer la classe Java chaque.class
fichier représente; ou (b) vous pouvez utiliser une bibliothèque qui fait cela pour vous.De l'Option (a): la Numérisation des fichiers JAR manuellement
Dans cette option, nous allons remplir
classNames
avec la liste de toutes les classes Java contenues à l'intérieur d'un fichier jar à/path/to/jar/file.jar
.Option (b): avec des réflexions bibliothèques
Goyave
Goyave a eu
ClassPath
depuis au moins 14.0, que j'ai utilisé et aimé. Une bonne chose à propos deClassPath
est qu'il ne charge pas les classes qu'il trouve, ce qui est important lorsque vous êtes à la recherche d'un grand nombre de classes.Réflexions
Je n'ai personnellement pas utilisé les Réflexions de la bibliothèque, mais il semble bien-aimé. Quelques bons exemples sont fournis sur le site web comme ce moyen rapide pour charger toutes les classes dans un package fourni par tout fichier JAR, ce qui peut être utile pour votre application.
Vous pouvez utiliser Java
jar
outil. Liste le contenu du fichier jar dans un fichier txt, et vous pouvez voir de toutes les classes dans le pot.unzip -l jarfile.jar
dans un pincement. Un fichier JAR est juste un fichier zip avec un manifeste!Peut-être que vous êtes à la recherche pour
jar
commande pour obtenir la liste des classes dans le terminal,où,
Ou, simplement grep résultat ci-dessus pour voir
.class
es uniquementÀ voir le nombre de
class
es,C'est un hack, je suis en utilisant:
Vous pouvez utiliser
java
's la saisie semi-automatique comme ceci:Cela vous donnera une liste des classes disponibles pour passer à la classe de départ. Bien sûr, en essayant d'en employer un qui n'a pas de fichier principal ne sera pas faire quelque chose, mais vous pouvez voir ce
java
pense que les classes à l'intérieur de la.jar
sont appelés.Vous pouvez utiliser le
Vous pouvez essayer:
Que ce sera utile uniquement si votre pot est exécutable, c'est à dire dans le manifeste, vous avez défini un peu de classe en tant que classe principale
Commande ci-dessous liste le contenu d'un pot fichier.
de 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
Conformément à ce manuel de
unzip
Vous pouvez essayer ceci :
Que ce sera utile uniquement si votre pot est exécutable, c'est à dire dans le manifeste, vous avez défini un peu de classe en tant que classe principale
Description DE la Solution : Eclipse IDE peut être utilisé pour créer un exemple de projet java et ajoutez tous les pots dans le Projet de construction de chemin de
ÉTAPES ci-dessous:
Créer un exemple de projet Eclipse Java.
Tous les tous les pots que vous avez dans son Chemin de création de
CTRL+MAJ+T et Tapez le nom complet de la classe .
Les résultats seront affichés dans la fenêtre avec tous les pots avoir de la classe. Voir photo ci-jointe .