Linux: qual è il modo più conveniente per vedere il contenuto del file .jar


21

Qual è il modo più conveniente per vedere il contenuto del file .jar senza utilizzare i comandi unzip / untar? Quello che mi piacerebbe fare è navigare all'interno usando cd comando come se fosse la solita cartella, vedere il contenuto, la dimensione delle classi - 'ls -la'.

MC permesso di farlo al volo. Esistono alternative di facilità d'uso?



@ekaj less e unzip non mi aiutano - non mi mostra la dimensione dei file nell'archivio, ad esempio, o la data e l'ora dell'ultima modifica (a meno che non la decomprimi da qualche parte in / tmp / AAA e poi eseguirò ls -la contro / tmp / AAA - che è quello che voglio evitare).
javagirl

Non decomprimere il file .zip, basta aprirlo. Puoi vedere le dimensioni e le date di modifica.
cutrightjm

come posso aprirlo nella riga di comando del server linux?
javagirl

@javagirl: unzip -l fa mostra la dimensione dei file nell'archivio e la data & amp; ora dell'ultima modifica senza decomprimere il pacchetto. Vedi la mia risposta qui sotto. In realtà, questo è un duplicato come suggerito da ekaj.
DevSolar

Risposte:



8

Usa vim per visualizzare e modificare il contenuto di un file jar senza estrarre:

Apri il vaso in vim come questo:

vim rabbitmq-client.jar

Ti viene presentato un elenco di file:

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/

Metti il ​​cursore sopra il META-INF/MANIFEST.MF e premere accedere . Vedi questo:

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)

Modifica alcune righe usando i normali comandi di modifica di vim.

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

Sei riportato a un elenco di file nel jar, esci.

:q <enter>

Verifica se le modifiche sono permanenti:

Follow the above steps again to inspect the file again, 
the change should still be there.

Ottimo personale, grazie. Anche se la risposta giusta (come per me) è unzip - ma quell'esempio di Vim è davvero apprezzato.
setevoy

perché il mio file jar contiene file binari?
John Joe

@JohnJoe: Perché il tuo Vim non lo identifica come archivio ZIP (che è effettivamente un .jar). Questo suggerisce una configurazione Vim rotta o troppo semplice. Se il problema persiste, prendi in considerazione l'idea di portarlo a morsa .
DevSolar

8

Questo è stato sempre abbastanza per me:

unzip -l <jarfile>


2

credo .jar i file sono fondamentalmente .zip File. Immagino, fuse-zip potrebbe funzionare.


1
Questa è la risposta che mi piacerebbe se si volesse effettivamente accedere all'archivio .zip come una cartella. (o almeno è così che ho capito che funziona)
cutrightjm

Non riesco ad installare roba aggiuntiva sul server, a meno che non mi pongo questa domanda solo installando MC
javagirl

1

Basta rinominare il file .jar in .zip. IE, test.jar a test.zip. Sarai in grado di vedere tutte le classi compilate. Se si desidera visualizzare la fonte da sola, tuttavia, è necessario un decompilatore.


scusa, non l'ho capito qual è la differenza? Non riesco ancora a fare ls, cd command contro il file * .zip.
javagirl

@javagirl È possibile aprire solo i file .zip, per quanto ne so, facendo clic su di essi se non si intende installare alcun software aggiuntivo. IE, non intendi mandare loro cd perché non sono directory.
cutrightjm

se dovessi usare 'mc' in linux sapresti che puoi sfogliare il contenuto del file zip / jar, perché rende la decompressione al volo. La mia domanda riguardava l'alternativa a 'mc', perché ho sentito un sacco di guru di Linux dicendo che potevano evitare 'mc' e usare la pura linea di comando con lo stesso risultato ed efficienza. E non posso 'cliccare' su file zip fino a quando sono sulla riga di comando del server linux
javagirl

Bene, questa è un'alternativa.
cutrightjm

0

Potresti usare un ssh mount avere il file system del server localmente. Dopo di esso è possibile utilizzare qualsiasi software disponibile localmente per navigare nel file system, ad es. Far Manager è molto potente per navigare negli archivi.

In questa soluzione non è necessario alcun software aggiuntivo sul server, solo sshd.


0

Nel caso in cui si desidera vedere i contenuti in ordine di data come ho fatto:

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


0
  • Per elencare il contenuto: jar tvf jarfile.jar
  • Estrarre: jar xvf jarfile.jar

Questa sembra essere potenzialmente una buona risposta, ma dovresti cercare di renderla più "manierosa". Le risposte che possono rientrare in una o due linee sono spesso generalmente meglio come commenti (una volta che hai abbastanza rep).
Anaksunaman
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.