Linux: qual é a maneira mais conveniente de ver o conteúdo do arquivo .jar


23

Qual é a maneira mais conveniente de ver o conteúdo do arquivo .jar sem os comandos descompactar / untar? O que eu gostaria de fazer - é navegar dentro usando o cdcomando como se fosse a pasta usual, vendo conteúdo, tamanho das classes - 'ls -la'.

MCpermitido fazê-lo em tempo real. Existe alguma alternativa fácil de usar?



@ekaj less e descompactar não me ajuda - ele não me mostra o tamanho dos arquivos no arquivo, por exemplo, nem a data e hora da última modificação (a menos que eu o descompacte em algum lugar para / tmp / AAA e execute o ls -la contra / tmp / AAA - que é o que eu quero evitar).
Javagirl

Não descompacte o arquivo .zip, apenas abra-o. Você pode ver os tamanhos e as datas de modificação.
Cutrightjm

como posso abri-lo na linha de comando do servidor linux?
Javagirl

@javagirl: unzip -l faz mostrar o tamanho dos arquivos no arquivo ea data e hora da última modificação sem desembalar o pacote. Veja minha resposta abaixo. Na verdade, isso é uma duplicata, como sugerido por ekaj.
DevSolar

Respostas:



12

Use o vim para visualizar e editar o conteúdo de um arquivo jar sem extrair:

Abra o jar no vim assim:

vim rabbitmq-client.jar

Você é apresentado com uma lista de arquivos:

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/

Coloque o cursor sobre META-INF/MANIFEST.MFe pressione Enter. Você vê isso:

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)

Mude algumas linhas usando os comandos normais de edição do vim.

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

Você é levado de volta para uma lista de arquivos no jar, e sai.

:q <enter>

Verifique se as alterações são permanentes:

Follow the above steps again to inspect the file again, 
the change should still be there.

Excelente equipe, obrigado. Embora a resposta correta (quanto a mim) seja descompactada - mas o exemplo desse vim realmente apreciado.
Setevoy

por que o conteúdo do meu arquivo jar mostrando o arquivo binário?
John Joe

@ JohnJoe: Como o seu Vim não o identifica como um arquivo ZIP (que é um .jar efetivamente). Isso sugere uma configuração do Vim quebrada ou muito básica. Se que persiste problema, considere levá-lo para vi.SE .
DevSolar

1
@JohnJoe, você deve instalar o vim mais recente: yum install --assumeyes vim-Enhanced
TraxX 16/07

8

Este sempre foi o suficiente para mim:

unzip -l <jarfile>


2

Eu acho que .jararquivos são basicamente .ziparquivos. Então, acho que o zip com fusível pode funcionar.


1
Esta é a resposta que eu escolheria se você realmente deseja navegar para o arquivo .zip como uma pasta. (ou pelo menos é assim que eu entendi que ele funciona)
cutrightjm

Não consigo instalar o material adicional para o servidor, a menos que eu não faria essa pergunta apenas através da instalação de MC
javagirl

1

Apenas renomeie o arquivo .jar para um .zip. Ou seja, test.jarpara test.zip. Você poderá ver todas as classes compiladas. Se você deseja visualizar a fonte em si, precisará de um descompilador.


desculpe, eu não entendi. Qual é a diferença? Ainda não consigo executar o comando ls, cd no arquivo * .zip.
Javagirl

@javagirl Você só pode abrir arquivos .zip, tanto quanto eu sei, clicando neles se não quiser instalar nenhum software adicional. IE, você não vai fazer o cd para eles porque eles não são diretórios.
Cutrightjm

se você usasse 'mc' no linux, saberia que pode navegar pelo conteúdo do arquivo zip / jar, porque isso descompacta rapidamente. Minha pergunta era sobre a alternativa ao 'mc', porque ouvi muitos gurus do linux dizendo que eles podem evitar o 'mc' e usar pura linha de comando com o mesmo resultado e eficiência. E eu não posso 'clicar' no arquivo zip, tanto quanto eu estou na linha de comando do servidor linux
javagirl

Bem, isso é uma alternativa.
Cutrightjm

0

Você pode usar uma montagem ssh para ter o sistema de arquivos do servidor localmente. Depois disso, você pode usar qualquer software disponível localmente para navegar no sistema de arquivos, por exemplo, Far Manageré muito poderoso para navegar nos arquivos.

Nesta solução, você não precisa de nenhum software adicional no servidor, apenas do sshd.


0

Caso você queira ver o conteúdo em ordem de data, como eu fiz:

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


0
  • Para listar o conteúdo: jar tvf jarfile.jar
  • Extrair: jar xvf jarfile.jar

Parece ser potencialmente uma boa resposta, mas você deve tentar torná-la "mais robusta". As respostas que podem caber em uma ou duas linhas geralmente são melhores como comentários (depois de ter representante suficiente).
Anaksunaman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.