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.