Newsgroup: it.comp.java
Titolo: compilazione fallita da prompt

Salve, ho due classi TimeOfDate e TestTimeOfDate.
Quest'utlima contiene il main. Lasciando i due file sul desktop di 
windows xp, apro il prompt, vado nella cartella desktop e do il comando 
javac TimeOfDate.java
Compilazione riuscita. Do allora il comando javac TestTimeOfDate.java e 
il compilatore mi avverte che non riesce a trovare il simbolo 
TimeOfDate. Ho provato ad aggiungere anche la riga package prova; alle 
due classi ma il risultato è sempre lo stesso. A questo punto credo 
possa trattarsi solo di un problema di path. Ecco il codice.
File TimeOfDate.java
-----
public class TimeOfDate {
   /**
    * Costruttore di default.
    *
    */
   public TimeOfDate() {
     hours=0;
     minutes=0;
     seconds=0;
   }
   /**
    * Costruttore overloaded.
    *
    * @param hours
    * @param minutes
    * @param seconds
    */
   public TimeOfDate(int hours, int minutes, int seconds) {
     this.hours=hours;
     this.minutes=minutes;
     this.seconds=seconds;
   }
   /**
    * Addiziona secondi all'ora corrente.
    * Ora corrente: 0h 0m 11s
    * addSeconds(10);
    * Ora corrente: 0h 0m 21s
    * addSeconds(5000);
    * Ora corrente: 1h 23m 41s
    *
    * @param seconds
    */
   public void addSeconds(int seconds) {
     double tmp;
     int h=0; int m=0; int s=0;
     if(seconds>=S_HOURS) {
       tmp=seconds/S_HOURS;
       h=(int)tmp;
       seconds=seconds-(h*S_HOURS);
       tmp=seconds/S_MINUTES;
       m=(int)tmp;
       seconds=seconds-(m*S_MINUTES);
       s=seconds;
     }
     else if(seconds>=S_MINUTES) {
       tmp=seconds/S_MINUTES;
       m=(int)tmp;
       seconds=seconds-(m*S_MINUTES);
       s=seconds;
     }
     else if(seconds>=0) {
       s=seconds;
     }
     sumTime(h, m, s);
   }
   /**
    * Restituisce il numero di secondi di differenza
    * tra due oggetti TimeOfData. Se l'oggetto passato
    * come parametro è null, viene lanciata un'eccezione.
    *
    * @param other oggetto TimeOfData
    * @return differenza in secondi tra due oggetti TimeOfData
    * @throws NullPointerException
    */
   public int secondsFrom(TimeOfDate other) throws NullPointerException {
   	if(other!=null) {
       int sHours=(other.getHour()-this.getHour())*S_HOURS;
       int sMinutes=(other.getMinutes()-this.getMinutes())*S_MINUTES;
       int sSeconds=other.getSeconds()-this.getSeconds();
       return sHours+sMinutes+sSeconds;
   	} else throw new NullPointerException();
   }
   public int getHour() {
     return hours;
   }
   public int getMinutes() {
     return minutes;
   }
   public int getSeconds() {
     return seconds;
   }
   /**
    * Metodo privato per sommare i vari attributi
    * di cui è composta la data.
    *
    * @param h
    * @param m
    * @param s
    */
   private void sumTime(int h, int m, int s) {
     if((seconds+s)/S_MINUTES>=1) {
       seconds=(seconds+s)%S_MINUTES;
       minutes++;
     } else seconds=(seconds+s)%S_MINUTES;
     if((minutes+m)/S_MINUTES>=1) {
       minutes=(minutes+m)%S_MINUTES;
       hours++;
     } else minutes=(minutes+m)%S_MINUTES;
     hours=(hours+h)%24;
   }
   private int hours;
   private int minutes;
   private int seconds;
   private static final int S_HOURS=3600;
   private static final int S_MINUTES=60;
}
File TestTimeOfDate.java
-----
public class TestTimeOfDate {
   public static void main(String[] args) {
 
   	/*
   	 * Creazione di un oggetto TimeOfDate tramite
   	 * costruttore di default.
   	 */
	TimeOfDate date=new TimeOfDate();
	System.out.println("Data1: " + date.getHour() + " Hours  " + 
date.getMinutes() +
	                   " Minutes  " + date.getSeconds() + " Seconds");
	/*
	 * Creazione di un oggetto TimeOfDate tramite
	 * costruttore overloaded. I parametri rappresentano
	 * rispettivamente ore, minuti, secondi, tutti di
	 * tipo int.
	 */
     TimeOfDate date2=new TimeOfDate(1, 23, 2);
     System.out.println("Data2: " + date2.getHour() + " Hours  " + 
date2.getMinutes() +
                        " Minutes  " + date2.getSeconds() + " Seconds");
     /*
      * Visualizzazione dei secondi di differenza tra
      * gli oggetti date e date2.
      */
     System.out.print("Date1 is ");
     try {
       System.out.print(date.secondsFrom(date2));
     }
     catch (NullPointerException e) {
       System.out.println("\nPuntatore null come argomento del metodo 
secondsFrom()");
       System.exit(-1);
     }
     System.out.println(" seconds from Date2.");
     /*
      * Aggiunta di secondi all'oggetto date.
      */
     date.addSeconds(4982);
     System.out.println("Data1: " + date.getHour() + " Hours  " + 
date.getMinutes() +
     		           " Minutes  " + date.getSeconds() + " Seconds");
   }
}

 possa trattarsi solo di un problema di path. Ecco il codice.
[CUT]
javac TimeOfDate.java
javac -cp . TestTimeOfDate.java


-cp non esiste, ho inteso -classpath ma il problema persiste, anche 
scrivendo javac -classpath ./ (o solo .) TestTimeOfData.java

 >>TimeOfDate. Ho provato ad aggiungere anche la riga package prova; alle
avevo capito male, -cp è valido per java nn per javac, cmq boh? a me
funziona in entrambi i modi.......
C:\Documents and Settings\r.eschini\Desktop>javac TimeOfDate.java
C:\Documents and Settings\r.eschini\Desktop>javac TestTimeOfDate.java
C:\Documents and Settings\r.eschini\Desktop>java TestTimeOfDate
Data1: 0 Hours  0 Minutes  0 Seconds
Data2: 1 Hours  23 Minutes  2 Seconds
Date1 is 4982 seconds from Date2.
Data1: 1 Hours  23 Minutes  2 Seconds
C:\Documents and Settings\r.eschini\Desktop>
C:\Documents and Settings\r.eschini\Desktop>javac TimeOfDate.java
C:\Documents and Settings\r.eschini\Desktop>javac -classpath .
TestTimeOfDate.java
C:\Documents and Settings\r.eschini\Desktop>java -cp . TestTimeOfDate
Data1: 0 Hours  0 Minutes  0 Seconds
Data2: 1 Hours  23 Minutes  2 Seconds
Date1 is 4982 seconds from Date2.
Data1: 1 Hours  23 Minutes  2 Seconds
C:\Documents and Settings\r.eschini\Desktop>

 funziona in entrambi i modi.......
Beh allora deve essere un problema di path. Mi puoi dire quali variabili 
di ambiente hai settato? Io ora ho solo PATH=c:\j2sdk1.4.2_08\bin
Forse c'è bisogno anche di settare CLASSPATH? Puoi controllare un po' 
tra le tue variabili? Grazie!

 ha scritto nel messaggio
news:XN75e.1189602$35.43...@news4.tin.it...

no, nn setto mai CLASSPATH perche puo' essere fontedi ambiguità, preferisco
specificare di volta in volta qual'e' il classpath della mia appl., l unica
che setto è JAVA_HOME ed ovviamente nel PATH metto %JAVA_HOME%/bin in modo
da poter utilizzare i tools del sdk dove voglio.......
il mio sdk è il j2sdk1.4.2_07, nn credo sia cambiato qualcosa da sto punto
di vista pero'......boh? nn so che dirti....
prova magari a fare un java -version inanzitutto per vedere se il java che
chiami è quella che ti aspetti e se hai settato bene l'ambiente

 
La versione è giusta, j2sdk1.4.2_08
Che intendi per ambiente giusto? Io uso eclipse e mi funziona alla 
perfezione, ma da riga di comando non ne vuole sapere di partire! 
Incredibile!

 Incredibile!
Risolto! Assurdo, c'era una variabile CLASSPATH ma relativa a quel 
maledetto di quicktime!!! Grazie per l'aiuto!