Ver el contenido de un archivo .jar


226

¿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


12
¿Por qué no aceptas la respuesta?
Sanghyun Lee

44
@HughLee El tipo que preguntó esto preguntó hace 8 años . Es por eso que debe haber una aceptación automática después de que una respuesta llegue a 100 votos a favor de la OMI
Kolob Canyon

@KolobCanyon es cierto, pero la respuesta mejor calificada se envió el mismo día en que se le preguntó
Pranav A.

1
La respuesta proviene de: https://superuser.com/a/808938/1045397 Puede hacerlo con vim vim file_name.jar
byte mamba

Respuestas:


280

Usando el JDK, listará jar -tflos archivos en el jar. javaple dará más detalles de un archivo de clase particular.


3
@salvob No necesita el guión como se necesita después tarcon las opciones obligatorias.
Tom Hawtin - tackline

2
Para su información, es posible que deba agregar C:\Program Files\Java\jdk<version>\bina su sistema o variable de entorno de RUTA de usuario antes de poder usarlo jarcomo un comando del sistema. (Donde <version> es su número de compilación de versión jdk. Verifíquelo C:\Program Files\Java)
Tezra

1
ejemplo de javap: javap -classpath test.jar com.yourpackage.HelloWorld
mPrinC

para ver el contenido de un archivo que no es de clase (como manifiesto), le gustaría hacer algo como esto: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC

55

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?


El enlace al sitio Jad se ha eliminado cuando la URL está estacionada. Todavía se puede encontrar en web.archive.org/web/20080106184313/http://www.kpdus.com/… pero Jad está desactualizado hoy, de todos modos.
PhiLho

35

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/


Esto funciona multiplataforma, mientras que 7-Zip mencionado en otra respuesta es específico de Windows.
Brad Cupit

Solía Archive Utility en OS X, funcionó bien. La mayoría de las utilidades (un) zip deberían funcionar, independientemente de la plataforma.
Greenonline

23

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 unzipcomando 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.jarentonces unzip -l test.jaraparecerá 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 zipo JDKalguna 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.


1
@Boop gracias por la sugerencia. lo agregará a mi respuesta
Opster Elasticsearch Ninja

1
Si el explorador de archivos admite zip, cambiar el nombre del jar a .zip también funciona (por ejemplo en Windows)
Rhayene

16

Nombres de métodos, campos, etc.

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.

Solo los contenidos

Para cualquier cosa, como ver el contenido, puede usar:

  • jar tvf jarfile.jar
  • winzip o cualquier herramienta zip

El código fuente

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 ...



7
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.


6

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.


6

Si desea ver qué hay dentro, simplemente cambie el nombre como la primera opción a continuación.

  1. F2 & Rename to jarfile.zip // Usa cualquier cremallera ...

  2. jar tvf jarfile.jar

  3. jar tf jarfile.jar


5

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


Tenga en cuenta que el jar debe estar en la carpeta "Bibliotecas referenciadas", no solo en "libs". Y en el caso de la biblioteca Apache Commons, no explora source.jar, explora el original y luego adjunta la fuente cuando Eclipse lo solicita.
Noumenon

4

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 .


3

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.


3

En Eclipse 3.4 hacer

  1. Arrastre el archivo jar en cuestión a un proyecto Java. Aparece una copia del archivo jar.
  2. Haga clic derecho en el archivo jar y elija "Crear ruta" -> "Agregar a la ruta de compilación".
  3. El archivo Jar se mueve al nodo "Bibliotecas referenciadas", donde se puede abrir y navegar en el panel Explorador de proyectos.

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.


3

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

http://jar-plug.sourceforge.net/


3

Si está en Windows y está usando PowerShell y está buscando un archivo en un jar, puede hacer lo siguiente:

jar -tf .\[JAR_NAME] | where {$_ -match "[FILENAME]"}

2

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.



2

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í!



1

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.


1

Eclipse 3.4 JDT

No es la forma más rápida porque primero debes arrastrarlo a tu eclipse. Pero tendrá una exploración completa de la clase java, incluso con descompilar habilitado.


1

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.


1

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. ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí


Por favor, no solo publique alguna herramienta o biblioteca como respuesta. Al menos demuestre cómo resuelve el problema en la respuesta misma.
Das_Geek


0

Su IDE también debería apoyar esto. Mi IDE (SlickeEdit) lo llama una "biblioteca de etiquetas". Simplemente agregue una biblioteca de etiquetas para el archivo jar, y debería poder explorar las clases y los métodos de manera jerárquica.






Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.