¿Cuál sería la forma más fácil de ver clases, métodos, propiedades, etc. dentro de un archivo jar? Estoy buscando algo equivalente al muy útil Lutz Roeder .NET Reflector - para Java
¿Cuál sería la forma más fácil de ver clases, métodos, propiedades, etc. dentro de un archivo jar? Estoy buscando algo equivalente al muy útil Lutz Roeder .NET Reflector - para Java
Respuestas:
Usando el JDK, listará jar -tf
los archivos en el jar. javap
le dará más detalles de un archivo de clase particular.
tar
con las opciones obligatorias.
C:\Program Files\Java\jdk<version>\bin
a su sistema o variable de entorno de RUTA de usuario antes de poder usarlo jar
como un comando del sistema. (Donde <version> es su número de compilación de versión jdk. Verifíquelo C:\Program Files\Java
)
jar tf test.jar | grep MANIFEST
Normalmente los abro con 7-Zip ... Permite al menos ver paquetes, clases y recursos.
Si tuviera que ver métodos o campos, usaría Jad pero, por supuesto, es mejor confiar en (bueno) JavaDoc ...
Ahora, en algún lugar de SO se mencionaron algunos complementos de Eclipse, para encontrar en qué archivo jar se ubica una clase, tal vez puedan hacer más (es decir, lo que solicitó).
[EDITAR] Referencia al hilo SO. No es lo que se pregunta, pero de alguna manera está relacionado, por lo tanto es útil: Java: ¿Cómo sé qué archivo jar usar dado un nombre de clase?
Lo que uso personalmente es JD-GUI. Es un 'descompilador' gratuito, ya que le permite ver el código fuente, las clases y los objetos en las clases, así como ver la estructura del archivo en un menú de árbol a la izquierda. Sin embargo, no le permite modificar las clases directamente.
Sitio web de JD-GUI: http://jd.benow.ca/
En caso de que alguien no lo sepa, un archivo JAR es solo un archivo ZIP que contiene las clases, recursos, etc. del programa y algunos metadatos. Puedes extraer uno para ver cómo se arma.
Por lo tanto, estoy usando un unzip
comando que es fácil de recordar y usar.
unzip -l <jar-file-name>.jar
Por ejemplo, si tiene un archivo JAR con el nombre test.jar
entonces unzip -l test.jar
aparecerá una lista de todo el contenido del archivo JAR.
Si bien todas las otras respuestas son geniales, pero en la mayoría de ellas, tendría que usar algún software como 7 zip
o JDK
alguna otra herramienta de eclipse, mientras que esto no requiere que tenga ninguno de estos grandes s / w y viene por defecto en Linux y mac por lo que es muy ligero y práctico de usar .
También puedes usar zipinfo <your jar file>
. si su sistema operativo lo admite.
Al agregar un jar a un proyecto en un IDE, generalmente puede ver métodos y nombres de campo, pero no la implementación detallada. NetBeans puede hacerlo, Eclipse probablemente, IntelliJ probablemente, etc. Puede explorar la estructura jar directamente dentro del IDE.
Para cualquier cosa, como ver el contenido, puede usar:
jar tvf jarfile.jar
Para acceder al código fuente, usaría un descompilador como JAD o una de sus interfaces u otro descompilador. Si el código está ofuscado, entonces ...
Al extender la respuesta de Tom Hawtin, puede canalizar la lista para filtrar la clase o los archivos deseados:
jar tf my-fat-jar-file.jar | grep filename
Esto debería funcionar en bash / zsh y similares, o emacs 'eshell.
Información adicional: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
jar -tvf file_name.jar
arriba solo imprimirá los nombres de los archivos .
Para ver el contenido de los archivos, puede extraer los archivos en una carpeta de la siguiente manera:
jar -xvf file_name.jar
esto descomprimirá el archivo jar y colocará el contenido en el mismo directorio donde está ejecutando esto.
O en Windows cambie el nombre del archivo .jar a .zip y luego puede descomprimirlo para extraer y ver el contenido del archivo jar. Como jar es internamente un archivo zip.
Usa WinRar . Se abrirá la estructura de carpetas para usted de manera intacta. También permite la edición en archivo, al tiempo que conserva las rutas.
Después de todo, un archivo JAR es solo un archivo ZIP.
Si desea ver qué hay dentro, simplemente cambie el nombre como la primera opción a continuación.
F2 & Rename to jarfile.zip
// Usa cualquier cremallera ...
jar tvf jarfile.jar
jar tf jarfile.jar
Si entiendo correctamente, desea ver no solo las clases sino también los métodos, las propiedades, etc. La única herramienta que sé que puede hacer es Eclipse: si agrega un jar al proyecto classpath, podrá explorar sus clases con métodos y propiedades utilizando el explorador de paquetes habitual.
De todos modos, esta es una buena idea para una buena herramienta Java independiente
Jad es rudo y ya no se mantiene. He cambiado a "Java Decompiler" , que tiene una interfaz de usuario ingeniosa y soporte para nuevas funciones de lenguaje.
Sin embargo, todos los descompiladores que he usado se encuentran con código que no se descompila correctamente. Para ellos, ayuda a comprender el código de bytes de Java desmontado producido por la herramienta estándar JDK, javap .
Bueno, un archivo jar es solo un archivo zip, así que si lo descomprimes (con tu utilidad de descompresión favorita), obtienes todos los archivos.
Si desea mirar dentro de los archivos de clase para ver los métodos, necesitará una herramienta para eso. Como PhiLho menciona, Eclipse es capaz de hacer eso (por defecto), y creo que la mayoría de los IDE de Java son capaces de eso.
En Eclipse 3.4 hacer
Si ver el código fuente también es un problema, abra una nueva pregunta.
Para la navegación en el nivel de archivo Jar (como archivo zip), uso 7zip, que funciona muy bien, y permite ver y editar entradas, lo que es ideal para la resolución de problemas.
Una forma de hacerlo es abrir la perspectiva en "Explorador de paquetes". Al hacer esto, puede ver la estructura de su jarra con detalles de clase. Para esto, verifique la carpeta de la biblioteca en su proyecto usando el explorador de paquetes.
Ventana >> Mostrar vista >> Otro >> Java >> Explorador de paquetes
Otra forma es, puede usar JarPlug como un complemento de eclipse. Esto funciona en eclipse / springsource
Puede abrirlos con la mayoría de las utilidades de descompresión en estos días, luego simplemente obtenga algo como DJ Java Decompiler si desea ver la fuente.
Bndtools proporciona un complemento de visor JAR gratuito para Eclipse.
Agregue el sitio de actualización de Eclipse e instale solo el visor.
Mi requisito era ver el contenido de un archivo (como un archivo de propiedades) dentro del jar, sin extraer realmente el jar. Si alguien llegó a este hilo como yo, pruebe este comando:
unzip -p myjar.jar myfile.txt
¡Esto funcionó bien para mí!
Creo que Java Decomplier es su mejor opción que puede descargar desde aquí: http://jd.benow.ca/
Prefiero el navegador JAR , tiene una interfaz simple donde puedes navegar por varios archivos JAR y buscar una clase específica en varios archivos JAR simultáneamente.
He configurado la acción predeterminada en Windows para "Abrir con WinZip". Esto facilita la administración de archivos JAR como archivos. Incluso puede agregar / eliminar archivos manualmente.
Este Jar Explorer es lo suficientemente bueno.
Admite tres tipos de descompilador: JD, Procyon y Fernflower.
Permite buscar archivos y duplicados en cualquier archivo java.
También el usuario puede modificar jar por archivos D&D y editar algunos archivos que no son de clase.
Yo uso JarExplorer o JarVisualizer .
Puede probar JarNavigator para ver y buscar el contenido de un archivo jar.
También puedes usar Luyten: una interfaz gráfica de usuario de código abierto Java Decompiler