Linux: Was ist der bequemste Weg, um den Inhalt der .jar-Datei zu sehen?

23

Was ist die bequemste Methode, um den Inhalt einer .jar-Datei ohne Verwendung von unzip / untar-Befehlen anzuzeigen? Was ich tun möchte, ist, mit dem cdBefehl darin zu surfen, als wäre es der übliche Ordner, der den Inhalt und die Größe der Klassen anzeigt 'ls -la'.

MCerlaubt, dies im laufenden Betrieb zu tun. Gibt es eine benutzerfreundliche Alternative?

javagirl
quelle
@ekaj less und unzip helfen mir nicht - es zeigt mir zum Beispiel nicht die Größe der Dateien im Archiv oder das Datum und die Uhrzeit der letzten Änderung an (es sei denn, ich dekomprimiere es irgendwo nach / tmp / AAA und führe dann ls -la aus gegen / tmp / AAA - das ist, was ich vermeiden möchte).
Javagirl
Entpacken Sie die .zip-Datei nicht, sondern öffnen Sie sie einfach. Sie können die Größen und Änderungsdaten sehen.
Cutrightjm
Wie kann ich es in der Linux-Server-Befehlszeile öffnen?
Javagirl
@javagirl: unzip -l tut zeigen Ihnen die Größe der Dateien im Archiv sowie Datum und Uhrzeit der letzten Änderung , ohne das Paket auspacken. Siehe meine Antwort unten. Eigentlich ist dies ist ein Duplikat als ekaj vorgeschlagen.
DevSolar

Antworten:

12

Mit vim können Sie den Inhalt einer JAR-Datei anzeigen und bearbeiten, ohne Folgendes zu extrahieren:

Öffne das Glas in vim so:

vim rabbitmq-client.jar

Sie erhalten eine Liste mit Dateien:

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/

Bewegen Sie den Cursor über META-INF/MANIFEST.MFund drücken Sie Enter. Du siehst das:

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)

Ändern Sie einige Zeilen mit den normalen vim-Bearbeitungsbefehlen.

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

Sie gelangen zurück zu einer Liste der Dateien in der JAR-Datei. Beenden Sie die JAR-Datei.

:q <enter>

Überprüfen Sie, ob die Änderungen dauerhaft sind:

Follow the above steps again to inspect the file again, 
the change should still be there.
Eric Leschinski
quelle
Tolles Personal, danke. Die richtige Antwort (wie für mich) ist zwar entpacken - aber das vim-Beispiel hat es wirklich geschätzt.
Setevoy
Warum wird in meinem JAR-Inhalt eine Binärdatei angezeigt?
John Joe
@ JohnJoe: Weil Ihr Vim es nicht als ZIP-Archiv identifiziert (was eine .jar effektiv ist). Dies deutet auf ein defektes oder zu einfaches Vim-Setup hin. Wenn das Problem weiterhin besteht, sollten Sie es an vi.SE senden .
DevSolar
1
@JohnJoe, du musst das neueste vim installieren: yum install --assumeyes vim-enhanced
TraxX
8

Dieser hat mir immer gereicht:

unzip -l <jarfile>

DevSolar
quelle
2

Ich denke, .jarDateien sind im Grunde genommen .zipDateien. Also, ich denke, Fuse-Zip könnte funktionieren.

Der Hochstapler
quelle
1
Dies ist die Antwort, die ich verwenden würde, wenn Sie tatsächlich wie ein Ordner zum ZIP-Archiv navigieren möchten. (oder zumindest habe ich so verstanden, dass es funktioniert)
cutrightjm
Ich kann keine zusätzlichen Dinge auf dem Server installieren, es sei denn, ich würde diese Frage nicht einfach durch die Installation von MC
javagirl am
1

Benennen Sie einfach die JAR-Datei in eine ZIP-Datei um. IE, test.jarzu test.zip. Sie können alle kompilierten Klassen sehen. Wenn Sie die Quelle jedoch selbst anzeigen möchten, benötigen Sie einen Dekompiler.

cutrightjm
quelle
Entschuldigung, ich habe es nicht verstanden. Was ist der Unterschied? Ich kann immer noch nicht ls, CD-Befehl gegen * .zip-Datei.
Javagirl
@javagirl Soweit ich weiß, können Sie ZIP-Dateien nur öffnen, indem Sie darauf klicken, wenn Sie keine zusätzliche Software installieren möchten. IE, Sie werden nicht zu ihnen cd, weil sie keine Verzeichnisse sind.
Cutrightjm
Wenn Sie 'mc' unter Linux verwenden würden, würden Sie wissen, dass Sie den Inhalt der zip / jar-Datei durchsuchen können, da dies das Entpacken im laufenden Betrieb ermöglicht. Meine Frage betraf die Alternative zu 'mc', da ich viele Linux-Guru sagen hörte, sie könnten 'mc' vermeiden und eine reine Befehlszeile mit dem gleichen Ergebnis und der gleichen Effizienz verwenden. Und ich kann nicht auf zip-Datei 'klicken',
solange
Nun, das ist eine Alternative.
Cutrightjm
0

Sie können ein ssh-Mount verwenden , um das Dateisystem des Servers lokal zu haben. Danach können Sie mit jeder lokal verfügbaren Software durch das Dateisystem navigieren, z. B. Far Managerist es sehr leistungsfähig, in Archive zu navigieren.

In dieser Lösung benötigen Sie keine zusätzliche Software auf dem Server, nur sshd.

kan
quelle
0

Falls Sie den Inhalt in der Reihenfolge des Datums sehen möchten, wie ich es getan habe:

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

JStrahl
quelle
0
  • So listen Sie den Inhalt auf: jar tvf jarfile.jar
  • Extrahieren: jar xvf jarfile.jar
Athi
quelle
Dies scheint möglicherweise eine gute Antwort zu sein, aber Sie sollten versuchen, es "kräftiger" zu machen. Antworten, die in eine oder zwei Zeilen passen, sind in der Regel besser als Kommentare (wenn Sie genügend Wiederholungen haben).
Anaksunaman