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?



@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.

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


2

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


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.


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.


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


0
  • Pour répertorier le contenu: jar tvf jarfile.jar
  • Extraire: jar xvf jarfile.jar

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.