Come posso ottenere un elenco di dipendenze di classe Java per una classe principale?
-
03-07-2019 - |
Domanda
C'è un modo per trovare tutte le dipendenze di classe di una classe principale java?
Ho setacciato manualmente le importazioni della classe principale e le sue importazioni, ma poi mi sono reso conto che, poiché non è necessario importare classi che si trovano nello stesso pacchetto, stavo mettendo insieme un elenco incompleto.
Ho bisogno di qualcosa che trovi ricorsivamente dipendenze (forse a una profondità definita).
Soluzione
Può essere fatto facilmente con javac. Elimina i file della classe e quindi compila la classe principale. javac compilerà in modo ricorsivo tutte le classi di cui ha bisogno (a condizione che non nasconda le classi / interfacce private del pacchetto in file con nomi strani). Naturalmente, questo non copre eventuali hack ricorsivi.
Altri suggerimenti
Ho appena trovato Class Dependency Analyzer , download, installa configura e 10 minuti dopo ho un completo Elenco delle dipendenze della classe.
in intellij idea hai la bella matrice della struttura di dipendenza . puoi esplorare perfettamente le dipendenze a livello di pacchetto e di classe. se ti piace più semplice, hai anche un visualizzatore di dipendenze, ma puoi vedere solo le dipendenze del primo ordine.
Potresti dare un'occhiata allo strumento da riga di comando jdeps
:
https://docs.oracle.com /javase/8/docs/technotes/tools/unix/jdeps.html
jdeps -cp <your cp> -v <path to your .class file>
Il comando restituirà un elenco delle dipendenze per quel file di classe java. Esistono molte altre opzioni che è possibile utilizzare nel comando come -regex
per trovare dipendenze corrispondenti a un determinato modello
Ecco uno snippet di codice che puoi inserire nel tuo metodo principale in Java per generare percorsi verso tutte le dipendenze della tua applicazione:
ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
System.out.println(url.getPath());
}