Como você encontraria um nome de classe específico em muitos arquivos jar?
(Procurando o nome da classe real, não as classes que a referenciam.)
Como você encontraria um nome de classe específico em muitos arquivos jar?
(Procurando o nome da classe real, não as classes que a referenciam.)
Respostas:
O Eclipse pode fazer isso, basta criar um projeto (temporário) e colocar suas bibliotecas no caminho de classe do projeto. Então você pode encontrar facilmente as aulas.
Outra ferramenta, que me vem à cabeça, é o Java Decompiler. Ele pode abrir muitos frascos de uma só vez e ajuda a encontrar aulas também.
fonte
Unix
No Linux, outras variantes do Unix, Git Bash no Windows ou Cygwin, usam os botões
jar
(ouunzip -v
)grep
efind
comandos .A seguir, lista todos os arquivos de classe que correspondem a um determinado nome:
Se você souber toda a lista de arquivos Java que deseja pesquisar, poderá colocá-los todos no mesmo diretório usando links (simbólicos).
Ou use
find
(com distinção entre maiúsculas e minúsculas) para encontrar o arquivo JAR que contém um determinado nome de classe:Por exemplo, para encontrar o nome do arquivo que contém
IdentityHashingStrategy
:Se o JAR puder estar em qualquer lugar do sistema e o
locate
comando estiver disponível:Uma variação de sintaxe:
janelas
Abra um prompt de comandos , vá para o diretório (ou diretório ancestral) que contém os arquivos JAR e:
Veja como funciona:
for /R %G in (*.jar) do
- loop sobre todos os arquivos JAR, atravessando recursivamente os diretórios; armazene o nome do arquivo em%G
.@jar -tvf "%G" |
- execute o comando Java Archive para listar todos os nomes de arquivos dentro do arquivo especificado e grave os resultados na saída padrão; o@
símbolo suprime a impressão da chamada do comando.find "ClassName" > NUL
- pesquise entrada padrão, canalizada a partir da saída do comando jar, para o nome de classe especificado; isso será definidoERRORLEVEL
como 1 se houver uma correspondência (caso contrário, 0).&& echo %G
- seERRORLEVEL
for diferente de zero, escreva o nome do arquivo Java na saída padrão (o console).Rede
Use um mecanismo de pesquisa que varre arquivos JAR .
fonte
há algum tempo, escrevi um programa exatamente para isso: https://github.com/javalite/jar-explorer
fonte
dá-lhe o nome do frasco
dá-lhe o pacote da classe
fonte
fonte
jar -tvf
porunzip -l
.Para localizar os frascos que correspondem a uma determinada sequência:
find . -name \*.jar -exec grep -l YOUR_CLASSNAME {} \;
fonte
Eu não sabia de um utilitário para fazer isso quando me deparei com esse problema, então escrevi o seguinte:
fonte
Existem também dois utilitários diferentes chamados "JarScan" que fazem exatamente o que você está solicitando: JarScan (inetfeedback.com) e JarScan (java.net)
fonte
O script de user1207523 funciona bem para mim. Aqui está uma variante que procura por arquivos jar de forma recusativa, usando find em vez de simples expansão;
fonte
Eu sempre usei isso no Windows e funcionou excepcionalmente bem.
O findstr.exe é padrão no Windows e nos parâmetros:
Espero que isso ajude alguém.
fonte
Uma
bash script
solução usandounzip (zipinfo)
. Testado emUbuntu 12
.fonte
Para pesquisar todos os arquivos jar em um determinado diretório para uma classe específica, você pode fazer o seguinte:
ou, ainda mais simples,
A saída é assim:
É muito rápido, porque a opção -F significa procurar por String fixa, portanto, não carrega o mecanismo de expressão regular para cada chamada grep. Se necessário, você sempre pode omitir a opção -F e usar expressões regulares.
fonte
Eu encontrei esse novo jeito
Portanto, isso lista o jar e a classe, se encontrados, se você quiser, pode fornecer ls -1 * .jar ou inserir xargs com o comando find HTH Someone.
fonte
O ClassFinder é um programa desenvolvido para solucionar esse problema. Ele permite pesquisar recursivamente por diretórios e arquivos jar para encontrar todas as instâncias de uma classe que corresponda a um padrão. Está escrito em Java, não em python. Possui uma interface gráfica agradável, que facilita o uso. E corre rápido. Esta versão é pré-compilada em um frasco executável para que você não precise construí-la a partir do código-fonte.
Faça o download aqui: ClassFinder 1.0
fonte
Verifique o JBoss Tattletale ; embora eu nunca o tenha usado pessoalmente, essa parece ser a ferramenta que você precisa.
fonte
Basta usar o utilitário FindClassInJars, é um programa simples, mas útil. Você pode verificar o código-fonte ou fazer o download do arquivo jar em http://code.google.com/p/find-class-in-jars/
fonte
Não sei por que os scripts aqui nunca funcionaram realmente para mim. Isso funciona:
fonte
Script para localizar o arquivo jar: find_jar.sh
Uso: ./find_jar.sh <diretório de nível superior que contém arquivos jar> <Nome da classe a ser encontrado>
Isso é semelhante à maioria das respostas dadas aqui. Mas ele apenas gera o nome do arquivo, se o grep encontrar alguma coisa. Se você deseja suprimir a saída do grep, você pode redirecioná-lo para / dev / null, mas eu prefiro ver a saída do grep também, para que eu possa usar nomes de classes parciais e descobrir o correto da lista de resultados mostrada.
O nome da classe pode ser um nome de classe simples, como "String" ou um nome completo, como "java.lang.String"
fonte
Para adicionar mais uma ferramenta ... esta é uma ferramenta muito simples e útil para Windows. Um arquivo exe simples no qual você clica, fornece um diretório para pesquisar, um nome de classe e ele encontrará o arquivo jar que contém essa classe. Sim, é recursivo.
http://sourceforge.net/projects/jarfinder/
fonte
Para encontrar uma classe em um grupo de pastas (e subpastas) de JARs: https://jarscan.com/
Exemplo:
fonte
Você pode encontrar uma classe em um diretório cheio de jars com um pouco de shell:
Procurando pela classe "FooBar":
fonte
Uma coisa a acrescentar a todos os itens acima: se você não tiver o executável jar disponível (ele vem com o JDK, mas não com o JRE), você pode usar o descompactação (ou WinZip, ou o que for) para realizar a mesma coisa.
fonte
autopromoção desavergonhada, mas você pode tentar um utilitário que escrevi: http://sourceforge.net/projects/zfind
Ele suporta arquivos compactados / de arquivo mais comuns (jar, zip, tar, tar.gz etc) e, diferentemente de muitos outros localizadores de jar / zip, suporta arquivos zip aninhados (zip dentro de zip, jar dentro de jar etc) até uma profundidade ilimitada.
fonte
Um pouco tarde para a festa, mas mesmo assim ...
Eu tenho usado o JarBrowser para descobrir em qual jar uma determinada classe está presente. Possui uma interface gráfica fácil de usar, que permite navegar pelo conteúdo de todos os jars no caminho selecionado.
fonte
O script a seguir o ajudará
fonte
Este funciona bem no MinGW (ambiente Windows Bash) ~ gitbash
Coloque esta função no seu arquivo .bashrc no diretório HOME:
fonte
Grepj é um utilitário de linha de comando para procurar classes em arquivos jar. Eu sou o autor do utilitário.
Você pode executar o utilitário como
grepj package.Class my1.jar my2.war my3.ear
Podem ser fornecidos vários arquivos de jar, ouvido e guerra. Para uso avançado, use find para fornecer uma lista de frascos a serem pesquisados.
fonte
Verifique este plug-in para ver o eclipse, que pode fazer o trabalho que você está procurando.
https://marketplace.eclipse.org/content/jarchiveexplorer
fonte
Em um ambiente Linux, você pode fazer o seguinte:
Onde name é o nome do arquivo de classe que você está procurando dentro dos jars distribuídos pela hierarquia de diretórios enraizados no base_dir .
fonte
Você pode usar
locate
egrep
:Certifique-se de executar
updatedb
antes de usarlocate
.fonte