|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 183
|
[JAVA] Come importare delle classi esterne in un'applicazione?
Ciao!
Qualcuno sa come si possono importare delle classi esterne (realizzate da me) in un'applicazione java? Ho visto che ci sono un paio di framework in giro che fanno questo lavoro (Java Plugin Framework e Micro Java Plugin Framework), ma il primo non lo capisco proprio ed il secondo mi dà un errore che non riesco a risolvere.... Qualcuno mi sa aiutare? Grazie, ciao!! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
fai un jar delle tue librerie e lo importi...no?
__________________
Khelidan |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jun 2008
Messaggi: 183
|
Mi sono dimenticato di specificare che dovrei importarle in real time... Praticamente durante l'esecuzione del programma, l'utente dovrebbe scegliere un file (che potrà essere sviluppato anche successivamente, ma sempre da me, quindi sempre con la stessa interfaccia) e modificare le funzionalità del programma a seconda dell'implementazione dei metodi fornita in quella determinata classe. E' come se avessi qualcosa del tipo: Codice PHP:
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La via più breve è
Codice:
Class<?> tipo = Class.forName(classe da caricare);
if(InterfaceType.class.isAssignableFrom(tipo)) {
InterfaceType instance = (InterfaceType)tipo.newInstance();
}
Class.forName usa il ClassLoader predefinito. La conseguenza è che non è possibile modificare la classe caricata ed accedere alla nuova versione con un secondo Class.forName perchè il ClassLoader ha una cache delle classi che ha caricato e restituirà la versione precedentemente caricata. Per rilevare eventuali mutazioni nella definizione della classe caricata dinamicamente devi caricarla ogni volta con un diverso ClassLoader. Esiste a questo scopo la classe URLClassLoader che, tra l'altro, ti permette di andare a pescare in directory o percorsi di rete non inclusi nel classpath. Tieni ben presente che il caricamento dinamico e la conseguente instanziazione di una classe apre la porta all'esecuzione di codice malevolo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:35.











Mi sono dimenticato di specificare che dovrei importarle in real time...








