Qual seria a maneira mais fácil de visualizar classes, métodos, propriedades etc. dentro de um arquivo jar? Estou procurando algo equivalente ao muito útil Lutz Roeder .NET Reflector - para Java
Qual seria a maneira mais fácil de visualizar classes, métodos, propriedades etc. dentro de um arquivo jar? Estou procurando algo equivalente ao muito útil Lutz Roeder .NET Reflector - para Java
Respostas:
Usando o JDK, jar -tf
listará os arquivos no jar. javap
fornecerá mais detalhes de um arquivo de classe específico.
tar
das opções obrigatórias.
C:\Program Files\Java\jdk<version>\bin
ao seu sistema ou variável de ambiente PATH do usuário antes de poder usá-lo jar
como um comando do sistema. (Onde <versão> é o número da versão jdk-build check-in. C:\Program Files\Java
)
jar tf test.jar | grep MANIFEST
Normalmente, eu os abro com o 7-Zip ... Permite pelo menos ver pacotes, classes e recursos.
Se eu precisar ver métodos ou campos, usaria o Jad, mas é claro, é melhor confiar no (bom) JavaDoc ...
Agora, em algum lugar do SO foram mencionados alguns plug-ins do Eclipse, para descobrir em qual arquivo jar uma classe está localizada, talvez eles possam fazer mais (isto é, o que você solicitou).
[EDIT] Referência ao thread SO. Não é o que é solicitado, mas de alguma forma relacionado, portanto útil: Java: Como sei qual arquivo jar usar com um nome de classe?
O que eu uso pessoalmente é JD-GUI. É um 'descompilador' gratuito, pois permite ver o código-fonte, classes e objetos nas classes, além de ver a estrutura do arquivo em um menu em árvore à esquerda. No entanto, ele não permite modificar as classes diretamente.
Site da JD-GUI: http://jd.benow.ca/
Caso alguém ainda não saiba disso, um arquivo JAR é apenas um arquivo ZIP que contém as classes, recursos, etc. do programa e alguns metadados. Você pode extrair um para ver como ele é montado.
Portanto, eu estou usando o unzip
comando que é fácil de lembrar e usar.
unzip -l <jar-file-name>.jar
Por exemplo, se você tiver um arquivo jar com nome test.jar
, unzip -l test.jar
listará todo o conteúdo do arquivo jar.
Enquanto todas as outras respostas são ótimas, mas na maioria delas, você teria que usar algum software como 7 zip
ou JDK
alguma outra ferramenta eclipse, enquanto isso não exige que você tenha nenhum desses grandes problemas de hardware, e isso vem por padrão no linux e mac, por isso é muito leve e prático de usar .
Você também pode usar zipinfo <your jar file>
. se o seu sistema operacional suportar isso.
Ao adicionar um jar a um projeto em um IDE, geralmente você pode ver métodos e nomes de campos, mas não a implementação detalhada. O NetBeans pode fazer isso, provavelmente Eclipse, IntelliJ, etc. Você pode navegar na estrutura do jar diretamente no IDE.
Para algo como visualizar o conteúdo, você pode usar:
jar tvf jarfile.jar
Para acessar o código-fonte, você usaria um descompilador, como o JAD ou um de seus front-ends ou outro descompilador. Se o código estiver ofuscado, então ...
Estendendo a resposta de Tom Hawtin, você pode canalizar a listagem para filtrar a classe ou os arquivos desejados:
jar tf my-fat-jar-file.jar | grep filename
Isso deve funcionar no bash / zsh e similares, ou no esmac do emacs.
Informações adicionais: https://docs.oracle.com/javase/tutorial/deployment/jar/view.html
jar -tvf file_name.jar
acima imprimirá apenas os nomes dos arquivos .
Para visualizar o conteúdo dos arquivos, você pode extrair os arquivos em uma pasta :
jar -xvf file_name.jar
isso descompactará o arquivo jar e colocará o conteúdo no mesmo diretório em que você o executa.
Ou, no Windows, renomeie o arquivo .jar para .zip e descompacte para extrair e exibir o conteúdo do arquivo jar. Como jar é internamente um arquivo zip.
Use o WinRar . Ele abrirá a estrutura de pastas para você de maneira intacta. Também permite a edição no arquivo morto, preservando os caminhos.
Afinal, um arquivo JAR é apenas um arquivo ZIP.
Se você quiser ver o que há dentro, simplesmente renomeie como primeira opção abaixo.
F2 & Rename to jarfile.zip
// Use qualquer descompactador ...
jar tvf jarfile.jar
jar tf jarfile.jar
Se bem entendi, você quer ver não apenas classes, mas também métodos, propriedades e assim por diante. A única ferramenta que eu sei que pode fazer isso é o Eclipse - se você adicionar um jar ao caminho de classe do projeto, poderá navegar nas classes com métodos e propriedades usando o habitual explorador de pacotes.
De qualquer forma, é uma boa ideia para uma boa ferramenta Java independente
Jad é desajeitado e não é mais mantido. Eu mudei para o "Java Decompiler" , que tem uma interface de usuário elegante e suporte para novos recursos de linguagem.
Todo descompilador que usei, no entanto, é executado no código e não é descompilado com êxito. Para esses, ajuda a entender o código de byte Java desmontado produzido pela ferramenta JDK padrão, javap .
Bem, um arquivo jar é apenas um arquivo zip; portanto, se você o descompactar (com o seu utilitário de descompactação favorito), todos os arquivos serão inseridos.
Se você quiser olhar dentro dos arquivos de classe para ver os métodos, precisará de uma ferramenta para isso. Como PhiLho menciona, o Eclipse é capaz de fazer isso (por padrão), e eu acho que a maioria dos Java IDEs é capaz disso.
No Eclipse 3.4, faça
Se a visualização do código fonte também for um problema, abra uma nova pergunta.
Para navegação no nível do arquivo Jar (como um arquivo zip), uso o 7zip, que funciona muito bem, e permite visualizar e editar entradas, o que é ótimo para solucionar problemas.
Uma maneira de fazer isso é abrir a perspectiva no "Package Explorer". Fazendo isso, você pode ver a estrutura do seu jar com detalhes da classe. Para isso, verifique a pasta da biblioteca em seu projeto usando o explorador de pacotes.
Janela >> Mostrar Exibição >> Outros >> Java >> Explorador de Pacotes
Outra maneira é que você pode usar o JarPlug como um plug-in do eclipse. Isso funciona em eclipse / springsource
Você pode abri-los com a maioria dos utilitários de descompactação atualmente e, em seguida, obter algo como DJ Java Decompiler, se quiser visualizar a fonte.
O Bndtools fornece um plugin de visualizador JAR gratuito para Eclipse.
Inclua o site de atualização do Eclipse e instale apenas o visualizador.
Meu requisito era exibir o conteúdo de um arquivo (como um arquivo de propriedades) dentro do jar, sem realmente extraí-lo. Se alguém alcançou esse segmento como eu, tente este comando -
unzip -p myjar.jar myfile.txt
Isto funcionou bem para mim!
Eu acho que o Java Decomplier é a melhor opção que você pode baixar aqui: http://jd.benow.ca/
Eu prefiro o JAR Browser , ele tem uma interface simples na qual você pode procurar vários JARs e procurar uma classe específica em vários JARs simultaneamente.
Eu configurei a ação padrão no Windows para "Abrir com o WinZip". Isso facilita o gerenciamento de JARs como arquivos. Você pode até adicionar / remover arquivos manualmente.
Este Jar Explorer é bom o suficiente.
Suporta três tipos de decompilador: JD, Procyon e Fernflower.
Permite pesquisar arquivos e duplicatas em qualquer arquivo java.
Além disso, o usuário pode modificar jar por arquivos de D&D e editar alguns arquivos que não são de classe.
Eu uso o JarExplorer ou o JarVisualizer .
Você pode tentar o JarNavigator para visualizar e pesquisar o conteúdo de um arquivo jar.
Além disso, você pode usar o Luyten - um guia de descompilador Java de código aberto