Newsgroup: it.comp.java
Titolo: il mio primo package...non funziona

Salve a tutti,
come da oggetto mi sto cimentando nella creazione del mio primo
package che, ovviamente, non ha funzionato.
In ordine:
ho create il path:
c:\Classes
e aggiunto il path nella variavile di ambiente di java.
Al suo interno ho poi creato una cartella Esercizi, contenente due
classi:
--------<esPackage>--------
package Esercizi;
import Esercizi.Misc.*;
class esPackage
{
	public static void main(String args[])
	{
		Misc m = new Misc();
		m.VisualizzaData();
	}
}
-------------------------------------
------------<Misc>-------------
package Esercizi;
import java.util.*;
class Misc
{
	public void VisualizzaData()
	{
		Date d = new Date();
		String mesi[] = new String[12];
		String giorni[] = new String[7];
		giorni[0] = "Lunedì";
		giorni[1] = "Martedì";
		giorni[2] = "Mercoledì";
		giorni[3] = "Giovedì";
		giorni[4] = "Venerdì";
		giorni[5] = "Sabato";
		giorni[6] = "Domenica";
		mesi[0] = "Gennaio";
		mesi[1] = "Febbraio";
		mesi[2] = "Marzo";
		mesi[3] = "Aprile";
		mesi[4] = "Maggio";
		mesi[5] = "Giugno";
		mesi[6] = "Luglio";
		mesi[7] = "Agosto";
		mesi[8] = "Settembre";
		mesi[9] = "Ottobre";
		mesi[10] = "Novembre";
		mesi[11] = "Dicembre";
		System.out.println("Oggi è " + giorni[d.getDay()] + " e sono le ore
" + d.getHours() + ":" + d.getMinutes());
		System.out.println("Siamo nel mese " + mesi[d.getMonth()] + "
nell'anno " + (d.getYear() + 1900));
	}
}
-------------------------------------
Entrambi le classi compilano, ma quando lancio <java esPackage>
ottengo quanto segue:
Exception in thread "main" java.lang.NoClassDefFoundError: esPackage
(wrong name: Esercizi/esPackage)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:
124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:
260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:
276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
319)
Cosa sto cannando?
Grazie,
saluti

 (wrong name: Esercizi/esPackage)
java Esercizi.esPackage funziona? 

> java Esercizi.esPackage funziona?
Si, vedo esattamento quello che mi aspetto.
Pertanto si deduce che? O_o
Grazie,
saluti


Che devi far sapere al povero java dove sta la classe (se ci fai caso, su 
filesystem un package è una "arborescenza" di cartelle).
Per richiamare una classe all'interno di un package devi esplicitarne il 
percorso, come fai quando la richiami nel codice
Ciao 

 percorso, come fai quando la richiami nel codice
Questo potrebbe essermi chiaro nel momento in cui sia...in so quale
path, ma se prima di lanciare il comando <java> al prompt dei commandi
mi sposto esattamente sotto:
c:\classes\esercizi
e richiamo una classe presente in questo path, che senso ha dovergli
espllicitare di lanciare una cosa che sta sotto Esercizi, se la classe
è già li?!?
L'unica cosa che mi viene in mente è che, avendo impostato io come
path nella variabile di ambiente di java <c:\classes>, per lanciare un
package lo devo chiamare come riferimento alla mia root, appunto
<classes>. Così è spiegato l'accaduto :)
Quindi non fa fede dove mi trovo io fisicamente sul filesystem prima
prima di lanciare il comando <java> che posso lanciare da qualunque
path basta esplicitare il percorso del package...ho capito bene?
Ora provo ma penso di aver capito.
Grazie,
saluti