¿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
@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ó
@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ó).
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.
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.
@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 ...
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 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 .
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.
Arrastre el archivo jar en cuestión a un proyecto Java. Aparece una copia del archivo jar.
Haga clic derecho en el archivo jar y elija "Crear ruta" -> "Agregar a la ruta de compilación".
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.
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.
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:
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.
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.
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.
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.
Respuestas:
Usando el JDK, listará
jar -tf
los archivos en el jar.javap
le dará más detalles de un archivo de clase particular.fuente
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 usarlojar
como un comando del sistema. (Donde <version> es su número de compilación de versión jdk. VerifíqueloC:\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?
fuente
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/
fuente
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
entoncesunzip -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
oJDK
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.fuente
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
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 ...
fuente
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
fuente
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:
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.
fuente
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.
fuente
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
fuente
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
fuente
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 .
fuente
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.
fuente
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.
fuente
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/
fuente
Si está en Windows y está usando PowerShell y está buscando un archivo en un jar, puede hacer lo siguiente:
fuente
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.
fuente
Bndtools proporciona un complemento de visor JAR gratuito para Eclipse.
Agregue el sitio de actualización de Eclipse e instale solo el visor.
fuente
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:
¡Esto funcionó bien para mí!
fuente
Creo que Java Decomplier es su mejor opción que puede descargar desde aquí: http://jd.benow.ca/
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
Podrías probar JarSpy . Hay una versión del complemento IDEA que utilizo.
fuente
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.
fuente
En Mac hay Jarzilla
fuente
Yo uso JarExplorer o JarVisualizer .
fuente
Puede probar JarNavigator para ver y buscar el contenido de un archivo jar.
fuente
java -xf some-j.jar
descomprimirá un archivo JAR.fuente
También puedes usar Luyten: una interfaz gráfica de usuario de código abierto Java Decompiler
fuente