PDA

View Full Version : [java] URLCLassLoader non trova la classe da caricare


santaclause83
09-03-2007, 14:11
ho scritto un programma che utilizza l'URLClassLoader per caricarsi dinamicamente una classe dal path inserito come parametro e restituire il risultato ritornato dalla classe su schermo

se tutte le classi stanno nella medesima cartella tutto scorre liscio,se provo invece ad eseguire il main da un path diverso mi genera una serie di eccezioni a runtime:

N.B:"ClassLoading" e' la classe main che e' chiamata ad eseguire a runtime la classe "Inc"

java.lang.ClassNotFoundException: Inc
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at ClassLoading.main(ClassLoading.java:19)


URLClassLoader non dovrebbe funzionare comunque dato che cerca il file dal path inserito come parametro?

spero mi possiate essere d'aiuto,grazie mille,nicholas

PGI-Bis
09-03-2007, 15:37
E' possibile che il path da te specificato non sia corretto. Probabilmente la classe viene caricata dal ClassLoader standard perchè il tuo URLClassLoader non riesce a trovarla nel percorso indicato. Ciò spiegherebbe perchè viene trovata quando usi in un percorso standard e non quando tale ultimo percorso non include la tua classe.

santaclause83
14-03-2007, 09:57
il problema e' che il path che mi da linux quando faccio il comando pwd e' un alias fino alla mia home+percorso dalla home alla classe contenente da caricare...

es:~/classe1/classe_contenente_Inc.class/

che l'alias possa essere un problema?...nel caso come faccio a ottenere il path completo dalla home?

grazie,nicholas

PGI-Bis
14-03-2007, 10:12
Il percorso della cartella "home" è contenuto nella variabile di sistema (sistema Java):

String home = System.getProperty("user.home");

Trovi un elenco di queste variabili nella documentazione del metodo getProperties della classe java.lang.System.

Non so se l'alias possa essere un problema. Puoi controllare stampando a video l'URL che usi per lo URLClassLoader. Se sputa un "null" allora il percorso non è riconosciuto. Forse... :D.