22

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?

  • @ekaj less and unzip doesnt help me - it doesn't show me the size of files in the archive for example, or date&time of last modification (unless I'll decompress it somewhere to /tmp/AAA and then will run ls -la against /tmp/AAA - which is what I want to avoid). – javagirl May 1 '12 at 17:20
  • Don't unzip the .zip file, just open it. You can see the sizes and modification dates. – cutrightjm May 2 '12 at 12:06
  • how can I open it in the linux server command line? – javagirl May 3 '12 at 15:34
  • @javagirl: unzip -l does show you the size of files in the archive and date & time of last modification without unpacking the package. See my answer below. Actually, this is a duplicate as ekaj suggested. – DevSolar Jun 19 '12 at 11:53
28

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
9

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.
  • Great staff, thanks. Although right answer (as for me) is unzip - but that vim's example really appreciated. – setevoy Jan 15 '16 at 20:02
  • why my jar file content showing binary file ? – John Joe Feb 13 '17 at 1:53
  • @JohnJoe: Because your Vim does not identify it as a ZIP archive (which a .jar effectively is). This hints at a broken, or too-basic Vim setup. If that problem persists, consider taking it to vi.SE. – DevSolar Nov 23 '17 at 8:20
8

This one was always enough for me:

unzip -l <jarfile>

2

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

  • 1
    This is the answer I would go with if you actually want to navigate to the .zip archive like a folder. (or at least that is how I understood that it works) – cutrightjm Apr 27 '12 at 20:00
  • I can't install additional stuff to server, unless I wouldn't ask this question just by installing MC – javagirl Apr 30 '12 at 9:29
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.

  • sorry, i didn't get it. what is the difference? i still cannot do ls, cd command against *.zip file. – javagirl May 1 '12 at 17:16
  • @javagirl You can only open .zip files, as far as I know, by clicking on them if you are not going to install any additional software. IE, you aren't going to cd to them because they are not directories. – cutrightjm May 2 '12 at 12:06
  • if you'd use 'mc' in linux you would knew that you can browse over content of zip/jar file, because it makes unzipping on fly. My question was about the alternative to 'mc', because I heard a lot of linux guru saying they can avoid 'mc' and use pure command line with the same result and efficiency. And I cannot 'clicking' on zip file as far as I'm on the linux server command line – javagirl May 3 '12 at 15:34
  • Well, this is an alternative. – cutrightjm May 3 '12 at 16:05
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.

0

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

0
  • To list the content: jar tvf jarfile.jar
  • To extract: jar xvf jarfile.jar
  • This seems to be potentially a good answer but you should try to make it "beefier". Answer(s) that can fit into one or two lines are often typically better off as comments (once you have enough rep). – Anaksunaman Nov 21 '18 at 12:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.