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