41

What is a most convenient way to see the content of .jar file w/o using unzip/untar commands? What I'd like to do - is to browsing inside using cd command like it is the usual folder, seeing content, size of classes - 'ls -la'.

MC allowed to do so on the fly. Is there are any ease-in-use alternative?

javagirl
  • 527

8 Answers8

42

Use the jar tool that comes with the Java SDK for listing contents of a jar file. As described in http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html

$ jar tvf jarfile.jar
nshah
  • 521
38

Use vim to view and edit the contents of a jar file without extracting:

Open the jar in vim like this:

vim rabbitmq-client.jar

You are presented with a list of files:

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/

Put the cursor over the META-INF/MANIFEST.MF and press Enter. You see this:

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)

Change a few lines using normal vim editing commands.

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

You are taken back to a list of files in the jar, quit out.

:q <enter>

Check to see if it the changes are permanent:

Follow the above steps again to inspect the file again, 
the change should still be there.
Eric Leschinski
  • 7,393
  • 7
  • 51
  • 51
16

This one was always enough for me:

unzip -l <jarfile>

DevSolar
  • 4,560
4
  • To list the content: jar tvf jarfile.jar
  • To extract: jar xvf jarfile.jar
Athi
  • 41
2

I think .jar files are basically .zip files. So, I guess, fuse-zip could work.

Oliver Salzburg
  • 89,072
  • 65
  • 269
  • 311
2

In case you wish to see the contents in date order as I did:

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

JStrahl
  • 151
1

Just rename the .jar file to a .zip. IE, test.jar to test.zip. You will be able to see all of the compiled classes. If you want to view the source its self, however, you will need a decompiler.

cutrightjm
  • 4,424
0

You could use an ssh mount to have server's file system locally. After it you can use any locally available software to navigate the file system, e.g. Far Manager is very powerful to navigate into archives.

In this solution you don't need any additional software on the server, only sshd.

kan
  • 131