DomeJ1988 ha scritto:
Che contiene il file sorgente UsoDiChar.java
Quando si avvia la JVM, ovviamente i sorgenti non contano più .... contano i file .class generati. Se hai seguito la procedura con il javac che ho detto prima, il UsoDiChar
.class lo deve aver generato nella stessa directory dove c'è il sorgente.
Ora conta solo più il "classpath". Concettualmente il classpath è semplicemente un
elenco di directory e/o file .jar che la JVM scansiona per rintracciare le classi da caricare (e eventuali altre "risorse").
Hai presente come funziona la PATH? (che non c'entra con Java, è a livello di sistema) Se tu da prompt lanci es. pippo.exe senza alcun path, il sistema va a cercare questo eseguibile in tutte le directory elencate nella PATH.
Bene, il classpath è un concetto praticamente quasi uguale. Nel classpath ci devono essere delle "basi". Se si imposta:
SET CLASSPATH=C:\aaa;C:\bbb;C:\ccc
se la JVM deve caricare una classe es.
com.esempio.Prova, allora converte questo in un path com\esempio\Prova.class e lo cerca sotto tutte le basi elencate nel classpath:
Esiste un C:\aaa\com\esempio\Prova.class ? Sì, trovata; No, continua ricerca.
Esiste un C:\bbb\com\esempio\Prova.class ? Sì, trovata; No, continua ricerca.
Esiste un C:\ccc\com\esempio\Prova.class ? Sì, trovata; No, essendo l'ultimo la JVM fallisce.
In sostanza: fai in modo che in classpath ci sia (in qualunque modo, con path assoluto o relativo) la directory che CONTIENE la "com" (che è il package "radice") dove sotto sotto ci sono la/e classi.