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
@HughLee O cara que perguntou isso perguntou há 8 anos . É por isso que é preciso haver uma aceitação automática após uma resposta atinge 100 upvotes IMO
Kolob Canyon
@KolobCanyon verdade, mas eles resposta mais votados foi apresentado no mesmo dia como este foi perguntado
@salvob Você não precisa do hífen, pois precisa tardas opções obrigatórias.
Tom Hawtin - defina
2
Para sua informação, pode ser necessário adicionar C:\Program Files\Java\jdk<version>\binao seu sistema ou variável de ambiente PATH do usuário antes de poder usá-lo jarcomo um comando do sistema. (Onde <versão> é o número da versão jdk-build check-in. C:\Program Files\Java)
para ver o conteúdo de um arquivos não-classe (como manifesto) que você gostaria de fazer algo como isto: tar -xOzf test.jarjar tf test.jar | grep MANIFEST
mPrinC
55
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).
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.
Isso funciona em várias plataformas, enquanto o 7-Zip mencionado em outra resposta é específico do Windows.
Brad Cupit 02/12/2015
Eu usei o Archive Utility no OS X, funcionou bem. A maioria dos utilitários (des) zip deve funcionar, independentemente da plataforma.
Greenonline
23
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 unzipcomando 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.jarlistará 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 zipou JDKalguma 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.
@ Boop obrigado pela sugestão. irá adicioná-lo à minha resposta
Opster Elasticsearch Ninja
1
Se os suportes de arquivo explorador zip, renomeando o frasco para .zip trabalha também (por exemplo, no Windows)
Rhayene
16
Nomes de métodos, campos etc.
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.
Apenas o conteúdo
Para algo como visualizar o conteúdo, você pode usar:
jar tvf jarfile.jar
winzip ou qualquer ferramenta zip
O código fonte
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 ...
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.
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
Observe que o jar precisa estar na pasta "Bibliotecas referenciadas", não apenas em "libs". E no caso da biblioteca Apache Commons, você não navega no source.jar, navega no original e depois anexa a fonte quando o Eclipse solicitar.
achou
4
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.
Arraste o arquivo jar em questão para um projeto Java. Uma cópia do arquivo jar é exibida.
Clique com o botão direito no arquivo jar e escolha "Build Path" -> "Add to Build Path".
O arquivo jar é movido para o nó "Bibliotecas referenciadas", onde pode ser aberto e navegado no painel Explorador de Projetos.
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.
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 -
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.
Não é o caminho mais rápido, porque você deve arrastá-lo para o seu eclipse primeiro. Mas você terá a navegação na classe java completa, mesmo com a descompilação ativada.
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.
Seu IDE também deve suportar isso. Meu IDE (SlickeEdit) chama de "biblioteca de tags". Basta adicionar uma biblioteca de tags para o arquivo jar e você poderá navegar pelas classes e métodos de maneira hierárquica.
Respostas:
Usando o JDK,
jar -tf
listará os arquivos no jar.javap
fornecerá mais detalhes de um arquivo de classe específico.fonte
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á-lojar
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?
fonte
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/
fonte
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
ouJDK
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.fonte
Nomes de métodos, campos etc.
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.
Apenas o conteúdo
Para algo como visualizar o conteúdo, você pode usar:
jar tvf jarfile.jar
O código fonte
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 ...
fonte
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
fonte
acima imprimirá apenas os nomes dos arquivos .
Para visualizar o conteúdo dos arquivos, você pode extrair os arquivos em uma pasta :
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.
fonte
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.
fonte
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
fonte
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
fonte
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 .
fonte
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.
fonte
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.
fonte
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
http://jar-plug.sourceforge.net/
fonte
Se você estiver no Windows e usando o PowerShell e estiver procurando um arquivo em um jar, você pode:
fonte
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.
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.
fonte
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 -
Isto funcionou bem para mim!
fonte
Eu acho que o Java Decomplier é a melhor opção que você pode baixar aqui: http://jd.benow.ca/
fonte
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.
fonte
Eclipse 3.4 JDT
Não é o caminho mais rápido, porque você deve arrastá-lo para o seu eclipse primeiro. Mas você terá a navegação na classe java completa, mesmo com a descompilação ativada.
fonte
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.
fonte
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.
fonte
Você pode tentar o JarSpy . Existe uma versão do plugin IDEA que eu uso.
fonte
Seu IDE também deve suportar isso. Meu IDE (SlickeEdit) chama de "biblioteca de tags". Basta adicionar uma biblioteca de tags para o arquivo jar e você poderá navegar pelas classes e métodos de maneira hierárquica.
fonte
No Mac, há o Jarzilla
fonte
Eu uso o JarExplorer ou o JarVisualizer .
fonte
Você pode tentar o JarNavigator para visualizar e pesquisar o conteúdo de um arquivo jar.
fonte
java -xf some-j.jar
descompactará um arquivo JAR.fonte
Além disso, você pode usar o Luyten - um guia de descompilador Java de código aberto
fonte