Qwerty1234 ha scritto:
Credo di aver capito, la mia classe viene rintracciata dal percorso definito dal . e le classi di activemq vengono rintracciate dal percorso percorsodovesta, e il ; ha lo scopo di separare i percorsi.
Il classpath infatti è solo un insieme di "basi" (directory/jar) da cui partire per trovare le classi/risorse.
Se in classpath c'è una directory
C:\Prove e la JVM deve cercare e caricare una classe
com.esempio.Demo, allora andrà a cercare se c'è un:
C:\Prove\com\esempio\Demo.class
Questo è il motivo per cui i nomi di package si DEVONO sempre "riflettere" nelle cartelle (che siano "sciolte" sul file-system o che siano in jar, è lo stesso).
Qwerty1234 ha scritto:
Dove la differenza è solo la presenza o meno del .
Effettivamente un elemento "vuoto" in classpath sembrerebbe corrispondere lo stesso al ".". Dovrei andare a vedere la documentazione ufficiale per verificare se ritrovo questa regola. Io personalmente, se devo mettere in classpath la directory corrente, esplicito sempre il "." .
Qwerty1234 ha scritto:
quindi suppongo che quando avvio normalmente il comando java package.Main si sottointende che il cp sia quello corrente per avviare la classe, giusto?
Se usi -cp il classpath è definito solo da questa opzione.
Se non usi -cp, il classpath è definito dalla variabile di ambiente CLASSPATH
Se non c'è una variabile di ambiente CLASSPATH, il classpath è per default la directory "corrente".
Stop, tutto qui.