Di solito questo viene fatto utilizzando il processo chiamato scansione del percorso di classe. In generale i programmi di caricamento delle classi non consentono la scansione di tutte le classi sul classpath.Ma di solito l'unico caricatore di classe usato è UrlClassLoader
da cui è possibile recuperare l'elenco di directory e file jar (vedere getURLs) e aprirli uno a uno per elencare le classi disponibili.
Questo approccio è implementato da librerie come Scannotation e Reflections.
Un altro approccio consiste nell'utilizzare Java Pluggable Annotation Processing API per scrivere un processore di annotazione che raccoglierà tutte le classi annotate in fase di compilazione e creerà il file di indice per l'utilizzo in runtime.
Il meccanismo di cui sopra è implementato nella libreria ClassIndex.
L'utilizzo della scansione del percorso di classe è in genere di due ordini di grandezza più lento dell'indicizzazione in fase di compilazione. Vedi this benchmark.
fonte
2012-01-11 17:26:45
Si sta utilizzando un IDE? – thejh
Vuoi cercare nel codice sorgente (.java) o nel codice compilato (.class)? –
No, non uso alcun IDE. Mi interessa solo il codice compilato nel mio JAR. – yegor256