Pergunta

Existe uma maneira de encontrar todas as dependências de classe de uma classe principal java?

I foram peneirar manualmente as importações da classe principal e é importações, mas então percebeu que, porque um não tem que importar classes que estão no mesmo pacote, eu estava montando uma lista incompleta.

Eu preciso de algo que vai encontrar dependências de forma recursiva (talvez até uma profundidade definida).

Foi útil?

Solução

Pode ser eaily feito com apenas javac. Excluir os arquivos de classe e, em seguida, compilar a classe principal. javac irá recursivamente compilar as classes que necessita (desde que você não escondem pacote de aulas particulares / interfaces em arquivos de nome estranho). Claro, isso não cobre qualquer hacks recursiva.

Outras dicas

Eu só descobri classe de dependência Analyzer , baixar, instalar configure e 10 min mais tarde do que eu tenho um completo lista de classe de dependência.

IntelliJ IDEA você tem o bacana dependência matriz estrutura . você pode explorar dependências Pacote e de nível de classe perfeitamente. Se você gosta mais simples, você tem um visualizador de dependência, bem como, mas htere você só pode ver dependências de primeira ordem.

Você pode querer dar uma olhada na ferramenta de linha de comando jdeps:

https://docs.oracle.com /javase/8/docs/technotes/tools/unix/jdeps.html

jdeps -cp <your cp> -v <path to your .class file>

O comando retornará uma lista de dependências para o arquivo classe java. Há muitas outras opções que você pode usar em seu comando como -regex para encontrar dependências correspondentes a um determinado padrão

Aqui está um trecho de código que você pode colocar em seu principal método em Java para caminhos de saída para todas as dependências do seu aplicativo:

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
    System.out.println(url.getPath());
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top