Linux: quel est le moyen le plus pratique de voir le contenu d'un fichier .jar

23

Quelle est la façon la plus pratique de voir le contenu d'un fichier .jar sans utiliser les commandes unzip / untar? Ce que j'aimerais faire - c'est naviguer à l'intérieur en utilisant une cdcommande comme si c'était le dossier habituel, voir le contenu, la taille des classes - 'ls -la'.

MCautorisé à le faire à la volée. Existe-t-il une alternative facile à utiliser?

javagirl
la source
@ekaj less et unzip ne m'aident pas - cela ne me montre pas la taille des fichiers dans l'archive par exemple, ni la date et l'heure de la dernière modification (à moins que je ne le décompresse quelque part vers / tmp / AAA et que je lance ensuite ls -la contre / tmp / AAA - ce que je veux éviter).
javagirl
Ne décompressez pas le fichier .zip, ouvrez-le simplement. Vous pouvez voir les tailles et les dates de modification.
cutrightjm
comment puis-je l'ouvrir dans la ligne de commande du serveur linux?
javagirl
@javagirl: unzip -l ne vous montre la taille des fichiers dans l'archive et la date et l' heure de la dernière modification sans déballer le paquet. Voir ma réponse ci-dessous. En fait, c'est un doublon comme l'a suggéré ekaj.
DevSolar

Réponses:

12

Utilisez vim pour afficher et modifier le contenu d'un fichier jar sans extraire:

Ouvrez le pot dans vim comme ceci:

vim rabbitmq-client.jar

Une liste de fichiers vous est présentée:

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/

Placez le curseur sur META-INF/MANIFEST.MFet appuyez sur Enter. Tu vois ça:

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)

Modifiez quelques lignes à l'aide des commandes d'édition vim normales.

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

Vous êtes ramené à une liste de fichiers dans le bocal, quittez.

:q <enter>

Vérifiez si les modifications sont permanentes:

Follow the above steps again to inspect the file again, 
the change should still be there.
Eric Leschinski
la source
Super personnel, merci. Bien que la bonne réponse (comme pour moi) soit décompressez - mais l'exemple de Vim vraiment apprécié.
setevoy
pourquoi mon contenu de fichier jar montrant un fichier binaire?
John Joe
@JohnJoe: Parce que votre Vim ne l'identifie pas comme une archive ZIP (qui est en fait un .jar). Cela suggère une configuration Vim cassée ou trop basique. Si cela persiste problème, envisager de prendre à vi.SE .
DevSolar
1
@JohnJoe, vous devez installer le dernier vim: yum install --assumeyes vim-
Enhanced
8

Celui-ci m'a toujours suffi:

unzip -l <jarfile>

DevSolar
la source
2

Je pense que les .jarfichiers sont essentiellement des .zipfichiers. Donc, je suppose que le fusible-zip pourrait fonctionner.

Der Hochstapler
la source
1
C'est la réponse que j'irais avec si vous voulez réellement naviguer vers l'archive .zip comme un dossier. (ou du moins c'est ainsi que j'ai compris que cela fonctionne)
cutrightjm
Je ne peux pas installer de trucs supplémentaires sur le serveur, sauf si je ne
poserais
1

Renommez simplement le fichier .jar en .zip. IE, test.jarà test.zip. Vous pourrez voir toutes les classes compilées. Cependant, si vous souhaitez afficher la source elle-même, vous aurez besoin d'un décompilateur.

cutrightjm
la source
désolé, je ne l'ai pas compris. Quelle est la différence? je ne peux toujours pas faire la commande ls, cd contre le fichier * .zip.
javagirl
@javagirl Pour autant que je sache, vous ne pouvez ouvrir des fichiers .zip qu'en cliquant dessus si vous n'allez pas installer de logiciel supplémentaire. IE, vous n'allez pas leur faire de cd car ce ne sont pas des répertoires.
cutrightjm
si vous utilisiez 'mc' sous linux, vous saviez que vous pouvez parcourir le contenu du fichier zip / jar, car cela rend la décompression à la volée. Ma question portait sur l'alternative à «mc», car j'ai entendu beaucoup de gourous de Linux dire qu'ils pouvaient éviter «mc» et utiliser la ligne de commande pure avec le même résultat et la même efficacité. Et je ne peux pas «cliquer» sur le fichier zip pour autant que je sois sur la ligne de commande du serveur Linux
javagirl
Eh bien, c'est une alternative.
cutrightjm
0

Vous pouvez utiliser un montage ssh pour avoir le système de fichiers du serveur localement. Après cela, vous pouvez utiliser n'importe quel logiciel disponible localement pour naviguer dans le système de fichiers, par exemple Far Managerest très puissant pour naviguer dans les archives.

Dans cette solution, vous n'avez pas besoin de logiciel supplémentaire sur le serveur, seulement sshd.

kan
la source
0

Dans le cas où vous souhaitez voir le contenu dans l'ordre des dates comme je l'ai fait:

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

JStrahl
la source
0
  • Pour répertorier le contenu: jar tvf jarfile.jar
  • Extraire: jar xvf jarfile.jar
Athi
la source
Cela semble être potentiellement une bonne réponse, mais vous devriez essayer de le rendre "plus costaud". Les réponses qui peuvent tenir sur une ou deux lignes sont généralement mieux sous forme de commentaires (une fois que vous avez suffisamment de représentants).
Anaksunaman