Linux: ¿cuál es la forma más conveniente de ver el contenido del archivo .jar?

21

¿Cuál es la forma más conveniente de ver el contenido del archivo .jar sin usar los comandos Unzip / Untar? Lo que me gustaría hacer es navegar dentro usando cd comando como es la carpeta habitual, Ver contenido, tamaño de las clases - 'ls -la'.

MC Permitido hacerlo sobre la marcha. ¿Hay alguna alternativa de fácil uso?

javagirl
fuente
@ekaj less y descomprimir no me ayuda, no me muestra el tamaño de los archivos en el archivo, por ejemplo, ni la fecha y hora de la última modificación (a menos que lo descomprima en algún lugar a / tmp / AAA y luego ejecuté ls -la contra / tmp / AAA - que es lo que quiero evitar).
javagirl
No descomprima el archivo .zip, solo ábralo. Puedes ver los tamaños y las fechas de modificación.
cutrightjm
¿Cómo puedo abrirlo en la línea de comandos del servidor linux?
javagirl
@javagirl: unzip -l hace muestra el tamaño de los archivos en el archivo y la fecha & amp; Hora de la última modificación sin desembalar el paquete. Vea mi respuesta a continuación. En realidad, este es un duplicado como ekaj sugirió.
DevSolar

Respuestas:

8

Use vim para ver y editar el contenido de un archivo jar sin extraer:

Abre el frasco en vim así:

vim rabbitmq-client.jar

Se le presenta una lista de archivos:

1 " zip.vim version v22
2 " Browsing zipfile /var/www/sandbox/eric/rabbitmq-client.jar
3 " Select a file with cursor and press ENTER
4
5 META-INF/
6 META-INF/MANIFEST.MF
7 com/
8 com/rabbitmq/
9 com/rabbitmq/client/
10 com/rabbitmq/client/impl/
11 com/rabbitmq/client/impl/recovery/
12 com/rabbitmq/tools/
13 com/rabbitmq/tools/json/
14 com/rabbitmq/tools/jsonrpc/
15 com/rabbitmq/utility/

Coloque el cursor sobre el META-INF/MANIFEST.MF y presione Entrar . Ves esto:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_31-b31 (Sun Microsystems Inc.)
Export-Package: com.rabbitmq.client;version="3.3.5";uses:="com.rabbitm
 q.client.impl,com.rabbitmq.utility,javax.net,javax.net.ssl,javax.secu
 rity.auth.callback,javax.security.sasl",com.rabbitmq.client.impl;vers
 ion="3.3.5";uses:="com.rabbitmq.client,com.rabbitmq.utility,javax.net
 ",com.rabbitmq.client.impl.recovery;version="3.3.5";uses:="com.rabbit
 mq.client,com.rabbitmq.client.impl",com.rabbitmq.tools;version="3.3.5
 ";uses:="com.rabbitmq.utility",com.rabbitmq.tools.json;version="3.3.5
 ",com.rabbitmq.tools.jsonrpc;version="3.3.5";uses:="com.rabbitmq.clie
 nt",com.rabbitmq.utility;version="3.3.5"
Bundle-Vendor: SpringSource
Bundle-Version: 3.3.5
Tool: Bundlor 1.0.0.RELEASE
Bundle-Name: RabbitMQ Java AMQP client library
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.rabbitmq.client
Import-Package: javax.net;version="0",javax.net.ssl;version="0",javax.
 security.auth.callback;version="0",javax.security.sasl;version="0"

Name: rabbitmq-client
Specification-Title: AMQP
Specification-Version: 0.9.1
Specification-Vendor: AMQP Working Group (www.amqp.org)
Implementation-Title: RabbitMQ
Implementation-Version: 3.3.5
Implementation-Vendor: Rabbit Technologies Ltd. (www.rabbitmq.com)

Cambie algunas líneas usando los comandos normales de edición vim.

press 'i' to enter insert mode
edit your lines
press :wq<enter> to write and quit

Volverá a una lista de archivos en el archivo jar, salga.

:q <enter>

Compruebe si los cambios son permanentes:

Follow the above steps again to inspect the file again, 
the change should still be there.
Eric Leschinski
fuente
Gran personal, gracias. Aunque la respuesta correcta (como para mí) es descomprimir, pero el ejemplo de vim es realmente apreciado.
setevoy
¿Por qué el contenido de mi archivo jar muestra un archivo binario?
John Joe
@JohnJoe: Porque tu Vim no lo identifica como un archivo ZIP (que efectivamente es .jar). Esto sugiere una configuración de Vim rota o demasiado básica. Si ese problema persiste, considera llevarlo a tornillo .
DevSolar
8

Este siempre fue suficiente para mí:

unzip -l <jarfile>

DevSolar
fuente
2

Yo creo que .jar los archivos son básicamente .zip archivos. Entonces, supongo, fuse-zip podría funcionar.

Der Hochstapler
fuente
1
Esta es la respuesta con la que me gustaría ir si realmente desea navegar al archivo .zip como una carpeta. (o al menos así es como entendí que funciona)
cutrightjm
No puedo instalar cosas adicionales en el servidor, a menos que no haga esta pregunta simplemente instalando MC
javagirl
1

Solo renombra el archivo .jar a un .zip. ES DECIR, test.jar a test.zip. Podrás ver todas las clases compiladas. Sin embargo, si desea ver la fuente en sí, necesitará un descompilador.

cutrightjm
fuente
lo siento, no lo entendí ¿cuál es la diferencia? Todavía no puedo hacer el comando ls, cd contra el archivo * .zip.
javagirl
@javagirl Solo puede abrir archivos .zip, que yo sepa, haciendo clic en ellos si no va a instalar ningún software adicional. IE, no les vas a cd porque no son directorios.
cutrightjm
si usara 'mc' en linux sabría que puede navegar por el contenido del archivo zip / jar, ya que hace que se descomprima al vuelo. Mi pregunta fue sobre la alternativa a 'mc', porque escuché a muchos gurús de Linux decir que pueden evitar 'mc' y usar la línea de comando pura con el mismo resultado y eficiencia. Y no puedo 'hacer clic' en el archivo zip en la línea de comandos del servidor linux
javagirl
Bueno, esta es una alternativa.
cutrightjm
0

Podrías usar un ssh mount Tener el sistema de archivos del servidor localmente. Después, puede usar cualquier software disponible localmente para navegar por el sistema de archivos, por ejemplo. Far Manager Es muy potente para navegar en archivos.

En esta solución no necesita ningún software adicional en el servidor, solo sshd.

kan
fuente
0

En caso de que desee ver los contenidos en orden de fecha como lo hice:

jar tvf jarfile.{e,j,w}ar | sort -k 7,7 -k 3,3M -k 4,4n -k5,5

JStrahl
fuente
0
  • Para listar el contenido: jar tvf jarfile.jar
  • Extraer: jar xvf jarfile.jar
Athi
fuente
Esta parece ser potencialmente una buena respuesta, pero deberías intentar hacerla más "robusta". Las respuestas que pueden caber en una o dos líneas suelen ser mejores como comentarios (una vez que tenga suficiente reputación).
Anaksunaman