Che il caricamento delle classi è il "da dove" caricarle sono 2 fasi distinte e dalla sua domanda non si capisce se effettivamente vorrebbe precaricarsi in memoria tutte le classi oppure non sapeva come aggiungere classi nel classpath a runtime.
Esatto. Aggiungo che sostituire il class loader non è semplice, di solito è una operazione assai rognosa se non sai bene dove metti le mani ( es coi plugin è importante anche l'ordine di caricamento delle classi). Detta in questi termini, bisogna capire quanto degradate sono le prestazioni a causa del loader e il guadagno dal cambio
Non e' necessario sostituire il class loader; dopo averne creato uno, per esempio con il codice che ho riportato sopra, basta
Object myNewObject = Class.forName(className, true, myClassLoader).newInstance();
ed hai l'oggetto creato e pronto per l'uso.
Non degrada le prestazioni
Eh la fai facile tu!non so quanta esperienza hai ma quel giochino crea più problemi di quanti ne risolva! Se lo fai per una classe, subito dopo torni a quello di default, sei sicuro che sia sempre tutto correttamente risolto?nessuno qui ti dice che non puoi farlo, un po di esperienza ( leggilo come ore di debug) portano a dire che farlo una tantum conviene se e solo se ne hai un enorme vantaggio e conosci molto bene la procedura di caricamento delle classi.
uuu facciamo sfoggio delle lauree. Beh non ti ho chiesto che hai studiato, ti ho chiesto quanta esperienza hai, è un tantinello diverso. Pure io ho attaccata alla parete la laurea, se non avessi dietro qualche anno di esperienza sul campo non ti direi "tocca il class loader se e solo se sai quello che fai e se e solo se non puoi fare in altro modo".
Determinati passaggi inoltre non vengono scritti esplicitamente nella documentazione: se io uso una libreria di terze parti e questa per i suoi conti usa il suo class loader, non sono obbligati a dire a me che sono solo l'utente che a loro fa comodo avere il suo class loader e non passare per quello di default (un esempio è la scrittura di applicazioni riguardanti la sicurezza). Di contro questo spesso è causa di problemi. In teoria hai pure ragione, leggendo e facendo attenzione tutto è possibile, in pratica la documentazione è praticamente ignorata, quando nemmeno scritta in modo completo.
A tal proposito ti invito a debuggare le librerie di sicurezza, le applicazioni che le includono (tipo application server come jboss facciamo il 7 che un po di documentazione ce l'ha con il modulo di sicurezza attivato) e la tua applicazione con una unica indicazione "ClassNotFoundException" generica, con uno stacktrace incompleto. Fallo col cliente che ti alita sul collo. Quando hai risolto in 5 minuti leggendo il manuale ne riparliamo.
Detto questo in bocca al lupo, credo ne avrai molto bisogno in futuro.
RTFM Read That F*** Manual!!!
... e non ho ancora nominato master e abilitazioni
Ho risposto: 30 anni di lavoro nel settore, quasi 31. Non era chiaro?
Grazie del consiglio
Non ho capito cosa mi vuoi dire.
Non ho capito perche' dovrei farlo, e soprattutto come questo possa aiutare a risolvere il problema in oggetto.
Grazie![]()