|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
[JAVA]Modificare il classpath di un'applicazione Java a runtime
Salve a tutti,
recentemente mi sono trovato a dover affrontare questo problema: modificare "a runtime" il classpath della mia applicazione Java. Pensate alla situazione classica: un'applicazione che si lancia con una pletora di dipendenze risolte in un numero elevato di jar, tutti in una directory "lib". Ho trovato su di un forum un suggerimento che per funzionare funziona, però mi da dei dubbi sulla "pulizia" e sulla legittimità di questo strattagemma: il suggerimento viene da qui. In pratica, si da' per scontato che il classloader di sistema sia un "URLClassLoader" (e già questo non mi piace), e poi si usa la reflection per invocare il metodo (protected!) addURL per aggiungere nuovi elementi al classpath. L'ho implementato e, come vi dicevo, va: però mi chiedevo se non ci fosse un sistema più pulito. Avrebbe senso/è possibile "sovrascrivere" il class loader di sistema per poter aggiungere dinamicamente le classi da usare? Credo che Tomcat faccia una cosa simile con le sue librerie, perchè il comportamento finale è proprio quello che ricerco io.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Scusa...
per quale motivo dovresti voler modificare il classloader a runtime? ![]() Se la tua applicazione è fatta bene nel build.xml dovresti aver già risolto tutti i jar. Se la tua esigenza è di caricare qualche altra classe che sia al di fuori del classpath al runtime allora basta usare un UrlClassLoader. Ma cmq secondo me è poco pulito caricare classi che siano fuori dal classpath a runtime....
__________________
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:27.




















