CdL Ingegneria Elettronica, Telecomunicazioni ed Automazione Fondamenti di Informatica LB A.A. 2007-08 11/02/2008 Alessandra Toninelli [email protected] Errori a Compile Time  Sono errori rilevati dal compilatore Java (in fase di compilazione)  Tra i più frequenti quando si inizia a programmare:  sintassi  errori nella definizione di tipo  riferimenti a metodi e/o variabili definiti in altri moduli (blocchi, package) 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 2 Errori di Sintassi  Punteggiatura mancante o errata  ‘;’ expected ‘}’ expected illegal start of expression  not a statement (attenti ai punti e virgola!)    Errori di spelling di metodi o variabili  cannot find symbol method/variable (controllare di aver scritto correttamente!) 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 3 Errori di Tipo  Definire una variabile di un certo tipo ed usarla come altro  Raccogliere il valore di ritorno di un metodo in una variabile di tipo non compatibile (controllare sempre la signature del metodo!)  incompatible type (può capitare anche a run time…) 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 4 Errori di Riferimento  Definire una variabile all’interno di un blocco ed usarla al di fuori del blocco  Definire una classe in un package ed usarla in un altro package (ricordarsi di importarla!)  cannot find symbol class  N.B: A volte anche errori di punteggiatura possono causare questo errore… 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 5 Errori a Run Time  Sono errori rilevati in fase di esecuzione:  class loading  linking  Normalmente causano il lancio di eccezioni  Eccezioni molto frequenti:    11/02/2008 ClassDefNotFoundError Exception NoSuchFieldError – NoSuchMethodError Exception NullPointer Exception Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 6 Class Loading  ClassDefNotFound Error  Il class loader non trova la definizione (bytecode) di una classe nel punto del file system in cui si aspetta di trovarla  Possibili soluzioni:  il classpath è settato correttamente?  sono incluse tutte le librerie (iniziando da jre)?  a volte ci vuole un po’ di pazienza… 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 7 Linking  NoSuchFieldError - NoSuchMethodError  Il linker ha trovato un riferimento ad un metodo o classe o interfaccia, ma la classe o l’interfaccia non contiene quel metodo o variabile.  Una possibile spiegazione:  Questo può succedere se si compila un file riferendo un metodo/variabile e successivamente si cancella la dichiarazione di quel metodo o variabile 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 8 Esecuzione  NullPointer Exception:  L’interprete Java tenta di usare una variabile (ad esempio leggerla) che però non riferisce alcuna area di memoria  Una soluzione:  inizializzare sempre gli oggetti dopo averli creati  funziona quasi sempre… 11/02/2008 Errori comuni– Fondamenti di Informatica LB – A. A. 2007-08 9