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

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

Tom Hawtin - tackline
fuente
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?

PhiLho
fuente
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/

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

Opster Elasticsearch Ninja
fuente
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 ...

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

Anil Kapoor
fuente
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.

Minnesota
fuente
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

Un chico de java
fuente
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

Yoni Roit
fuente
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 .

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

Jeroen Heijmans
fuente
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.

Thorbjørn Ravn Andersen
fuente
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/

Ziya
fuente
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]"}
James
fuente
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.

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

Subhashree Pradhan
fuente
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.

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

Dennis C
fuente
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.

Chris Nava
fuente
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í

usuario12377884
fuente
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

Podrías probar JarSpy . Hay una versión del complemento IDEA que utilizo.

Dan Dyer
fuente
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.

ÁRBOL
fuente
0

Puede probar JarNavigator para ver y buscar el contenido de un archivo jar.

Kumaravel
fuente
0

java -xf some-j.jar descomprimirá un archivo JAR.

MKatleast3
fuente
es jar -xf someJar.jar
Prajwal