Outil pour vérifier le nom du package et le nom de classe de la classe dans un fichier .class
-
29-09-2019 - |
Question
Y at-il un certain outil ou technique pour me laisser interroger le contenu du fichier de Java? Je veux savoir le nom complet de la classe et quelle méthode elle définit. Je pensais que peut-être javap
pourrait me aider avec cela, mais je ne peux pas comprendre comment.
La solution
La classe dans le fichier .class toujours le même que le nom du fichier (hors .class)
Dans la pratique, oui. Chaque implémentation Java que je suis venu à travers repose sur fichier de classe pour localiser les classes noms de fichiers à charger, etc.
En théorie, un classloader peut utiliser un autre mécanisme, et donc peut cours de magasin dans les fichiers sans rapport avec les noms de classe. Cependant, je ne vois aucun avantage à le faire.
même si j'utilise une autre langue, comme Groovy, Jython ou Scala?
Étant donné que ces langues compilent aux fichiers bytecode qui sont ensuite chargés par les chargeurs de classe standard, il est à peu près un étant donné que les noms de classe dans les fichiers bytecode correspondent aux fichiers noms de fichiers ... sinon les chargeurs de classe ne serait pas être en mesure de localiser les fichiers de classe. Cependant, cela ne signifie pas nécessairement que les noms de classe dans les fichiers bytecode sont identiques à Scala / Jython / Groovy les identifiants utilisés dans le code source. , C'est en effet même pas vrai pour Java; par exemple. les noms de ClassFile pour les classes anonymes et internes pour ne pas les mêmes que les identifiants dans le code source Java.
Autres conseils
Appel javap ClassName
(non javap ClassName.class
).
Si votre .class
juste javap ClassName
Si votre .class
est dans un sous-javap path/to/ClassName
ou javap path.to.ClassName
Ressources:
Essayer cette Java Decompiler . Pourquoi devriez-vous donner les informations que vous voulez.