Questo è ok ed è indispensabile se vuoi lanciare javac.exe java.exe o gli altri tools del JDK senza dover indicare il path completo ogni volta.Originariamente inviato da pieroJdk
io nelle variabili di sistema ho settato una variabile PATH con il percorso della cartella bin
Che forse non hai ancora capito a cosa serve e come viene usato il "classpath".Originariamente inviato da pieroJdk
e nella variabile CLASSPATH ho messo il "."...
la cartella prog l'ho messa nella cartella di java..
quindi se la cartella bin ha il percorso C:\Program Files\Java\jdk1.6.0_16\bin
la cartella prog ha percorso C:\Program Files\Java\jdk1.6.0_16\prog
il problema però continua a persistere..ovvero il prog.io per il compilatore continua a non esistere..
qual è il problema???
L'ho detto prima ma posso anche ripeterlo meglio: il "classpath" è semplicemente un elenco di: a) Directory b) File .jar (anche eventualmente .zip, sebbene non sia comune/tipico).
Questo elenco viene usato dalla JVM per "trovare" le classi.
Hai detto che quelle due classi le hai come file .class "sciolti". Bene se il package dichiarato per quelle classi è prog.io allora devono stare sotto una directory prog\io ma la "base", cioè dove sta la 'prog' la puoi scegliere tu!
Immagina di avere questi .class in:
C:\Libs\prog\io\ConsoleInputManager.class
C:\Libs\prog\io\ConsoleOutputManager.class
E in classpath ci metti le seguenti cose:
CLASSPATH=.;C:\Libs
Ovvero '.' (directory corrente) e C:\Libs
Tu ti trovi ad esempio come directory corrente in C:\Esempi dove hai il tuo programmino di prova. Quando lo lanci la JVM va a cercare la classe prog.io.ConsoleInputManager di cui il tuo programmino ha bisogno.
Cosa fa la JVM?? Scandisce il classpath e sapendo che i package si "riflettono" nella struttura delle directory, compone dei path man mano per trovare la classe.
Il primo elemento in classpath è '.' e siccome ti trovi in C:\Esempi la JVM cerca:
C:\Esempi\prog\io\ConsoleInputManager.class
Esiste? Supponiamo di no.
Poi il secondo elemento è C:\Libs e la JVM cerca:
C:\Libs\prog\io\ConsoleInputManager.class
Esiste? Sì, ho detto prima dove stavano queste due classi. Quindi la trova. Punto.

Rispondi quotando