Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Caricare Classe a runtime

    Anzitutto salve a tutti (primo post)

    Sto cercando un sistema di caricare una classe a runtime per un progetto in cui i singoli moduli devono essere caricati dinamicamente. I File dei moduli potrebbero (dovrebbero) stare tutti in una directory predeterminata
    Googolando e cercando sul forum ho trovato una soluzione, ma o non l'ho capita o non è quella giusta.
    Per testare il sistema ho due creato una classe "ClasseProva" che non fa altro che stampare una riga "Sto funzionando" gusto per vedere se il sistema gira.

    codice:
    File percorso = new File("/mio/percorso/");
    URL[] urls = {percorso.toURI().toURL()};
    ClassLoader cl = URLClassLoader.newInstance(urls);
    
    Class c = cl.loadClass("ClasseProva");
    Object o = c.newInstance();
    Domande:
    1) in
    codice:
    File percorso = new File("/mio/percorso/");
    devo inserire solo il percorso o anche il nome del file "/mio/percorso/ClasseProva.class" ?

    2) Il codice viene compilato, quando lo eseguo ho un errore e mi dice che la classe "ClasseProva" non esiste.

    Qualche consiglio per correggerlo? Altre idee?
    Vi ringrazio!

  2. #2
    Per caricare una classe a runtime puoi usare anche l'istruzione java.lang.Class.forName("").

  3. #3
    Grazie,
    ora lo provo, il resto lo va bene?
    per caricare una classe da un path specifico va bene usare URLClassLoader??

  4. #4
    OK risolto l'arcano:
    Funziona tutto! il problema era che nel caso si volesse caricare una classe che fa parte di un package bisogna
    inserire al posto di
    codice:
    Class c = cl.loadClass("classeprova");
    codice:
    Class c = cl.loadClass("packagedellaclasse.classeprova");
    e il resto funziona (almeno con me )

    Grazie a tutti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.