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).

È stato utile?

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());
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top