Herramienta para comprobar el nombre del paquete y el nombre de la clase de la clase dentro de un archivo .class
-
29-09-2019 - |
Pregunta
¿Hay alguna herramienta o técnica que me permita consultar el contenido de un archivo .class de Java? Quiero saber el nombre completo de la clase y qué método se define. Pensé que tal vez javap
podría ayudarme con esto, pero no puedo encontrar la manera.
Solución
Es la clase contenida en el archivo .class siempre el mismo que el nombre del archivo (excluyendo .class)
En la práctica, sí. Cada aplicación Java que he encontrado se basa en los nombres de ruta del archivo de clase para ubicar las clases para ser cargados, etc.
En teoría, un cargador de clases podría utilizar algún otro mecanismo, y por lo tanto podría clases almacenar en archivos que no guardan relación con los nombres de las clases. Sin embargo, no veo ninguna ventaja en hacer eso.
incluso si uso algún otro idioma, como Groovy, Scala o Jython?
Dado que los idiomas compilan a los archivos de código de bytes que luego son cargados por los cargadores de clases estándar, entonces es casi un hecho que los nombres de las clases en los archivos de código de bytes corresponden a los nombres de ruta de archivos ... de lo contrario los cargadores de clases no lo haría ser capaz de localizar los archivos de clase. Sin embargo, esto no significa necesariamente que los nombres de las clases en los archivos de código de bytes son idénticos a Scala / Jython / Groovy los identificadores utilizados en el código fuente. De hecho, esto no es cierto incluso para Java; p.ej. los nombres de archivo de clase para las clases anónimas e interior porque no son los mismos que los identificadores en el código fuente de Java.
Otros consejos
javap ClassName
de llamadas (no javap ClassName.class
).
Si su .class
sólo para javap ClassName
Si su .class
está en una subcarpeta o javap path/to/ClassName
javap path.to.ClassName
Recursos:
Probar Java Decompiler . Debe darle la información que desea.