View Full Version : [JAVA] Come importare delle classi esterne in un'applicazione?
dionisoft
22-05-2009, 19:06
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!! :)
khelidan1980
23-05-2009, 14:35
fai un jar delle tue librerie e lo importi...no?
dionisoft
23-05-2009, 16:21
:doh: Mi sono dimenticato di specificare che dovrei importarle in real time... :stordita:
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:
public class Calcolatrice
{
int op1, op2;
float result;
public Calcolatrice()
{
op1 = op2 = result = 0;
}
// Carica classe
public funzione()
{
result = classeCaricata.operazione(op1,op2);
}
}
Solo che caricando una determinata classe in real time fossi capace di modificare il tipo di operazione!!! :help:
La via più breve è
Class<?> tipo = Class.forName(classe da caricare);
if(InterfaceType.class.isAssignableFrom(tipo)) {
InterfaceType instance = (InterfaceType)tipo.newInstance();
}
Il presupposto è che la classe da caricare si trovi nel classpath.
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.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.