Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java
Master SIGLIS2 Nommer et placer incorrectement un fichier java La classe X doit être déclarée dans le fichier X.java Si X appartient au package p alors : X.java doit être placé dans le dossier p
Master SIGLIS3 Erreur d'encodage des caractères Quand on fait un projet Netbeans avec les fichiers de la correction on a une erreur "unmappable character for encoding UTF-8" Il faut changer l'encodage du projet : il est encodé par défaut en UTF-8 il faut passer en ISO Dans la vue Projet/Bouton Droit sur la racine du Projet/Selectionner Properties, Dans la fenêtre qui s'affiche, selectionner Sources, puis changer l'encodage (encoding) de UTF-8 en ISO
Master SIGLIS4 tous les mots clés Java sont en minuscule le message d'erreur dépend du mot clé incorrectement orthographié Exemple : pour class Line nn: class or interface declaration expected class, interface, extends, for, do while, try, catch, throws, public,private, if, else
Master SIGLIS5 toutes les instructions doivent se terminer par un point-virgule il manque un ; quand il y a un problème de compilation un point rouge s'affiche Quand on déplace la souris au dessus du point rouge on a une aide sur l'erreur : ici il manque un ; rajouter un ; corrige l'erreur
Master SIGLIS6 les blocs sont ouvert par une { et fermés par une } Conséquence : il doit y avoir autant de { que de } !! Quand on oublie une accolade une erreur est détectée mais pas toujours à l'endroit de l'erreur ! De plus l'erreur varie Quand on a une erreur que l'on n'arrive pas à expliquer c'est souvent une bonne idée de vérifier que l'on a autant de { que de } Souvenez vous : il doit y avoir une bloc pour la classe toute méthode doit définir un bloc les structures de controles utilisent des blocs si elles contiennent plus d'une instruction bloc de la classe bloc de la méthode main bloc du do blocs du if
Master SIGLIS7 une variable doit être obligatoire définie jeanDurand n'est pas défini Partout où elle est mentionnée on a une erreur !!! Déclarer la variable résoud le problème Erreur : "Cannot find symbol symbol jeanDurand"
Master SIGLIS8 Une constante de type String définie au dela de la ligne String s = "A very long string which just happens to go over the end of a line and causes a problem with the compiler"; Erreur : Line nn: ';' expected Solution : String s = "A very long string which just happens to go over the end "+ "of a line and causes a problem with the compiler"
Master SIGLIS9 Un appel à une méthode sans argument sans mettre les parenthèses j eanDurand.isMineur au lieu de jeanDurand.isMineur() Line nn: Invalid expression statement Erreur
Master SIGLIS10 Oublier d'importer un package Quand on utilise un objet, une méthode, une constante qui est définie dans un package externe, il faut obligatoirement importer ce package import java.util.LinkedList; Exemple Permet d'utiliser les listes
Master SIGLIS11 Java est sensible à la casse la variable jeanDurand et la variable jeandurand ne sont pas les mêmes la classe String et la classe string ne sont pas les mêmes Line nn: Class xxxx not found in type declaration. ou Line nn: Undefined variable: xxxx Erreurs
Master SIGLIS12 spécifier les arguments d'une méthode incorrectement public int[] calcul(int a, int b, String c) Exemple le type de tous les arguments doit être spécifié public int[] calcul(int a, b, String c) le type du retour doit être spécifié public calcul(int a, int b, String c) les arguments doivent être séparés par des, public int[] calcul(int a int b, String c) Line nn: Identifier expected Erreur
Master SIGLIS13 Oublier que == compare les références et non les valeurs Résultat == compare les références equals compare le contenu des objets claude1 "Claude" claude2 "Claude" ici claude1 et claude2 référencent deux zones mémoires différentes mais qui contiennent la même valeur
Master SIGLIS14 Oublier le(s) break dans un case Un case sans les break Résultat (cas où on a tiré un e) On a executé toutes les branches en dessous du cas 'e'
Master SIGLIS15 Oublier void dans les méthodes qui ne retournent pas de résultat Erreur Line nn: Invalid method declaration; return type required
Master SIGLIS16 Oublier un return dans une méthode Quand une méthode renvoie un résultat, elle doit contenir au moins un return. Erreur Line nn: Return required at end of xxxx Exemple
Master SIGLIS17 Rendre un attribut privé et essayer d'y accéder depuis une autre classe Les attributs privés d'un objet sont inaccessibles depuis l'exterieur
la variable arg1 est inconnue en dehors du bloc où elle a été déclarée Master SIGLIS18 Une variable est inconnue en dehors du bloc où elle a été déclarée Solution Déclarer arg1 dans un bloc où elle sera visible partout L'erreur a disparu Exemple
Master SIGLIS19 Déclarer un constructeur comme une méthode Un constructeur se reconnait : il porte le même nom que la classe Sa signature ne contient pas de type de retour
Master SIGLIS20 Utiliser un double à la place d'un float Toute constante numérique contenant un point est considérée comme un double On ne peut affecter un double à un float à cause de la perte de précision Si on veut le faire, il faut forcer le compilateur Solution Soit on ajoute f derrière la constante pour exprimer qu'il s'agit d'un float Soit un utilise un cast pour faire la conversion explicitement c'est la même chose pour les long et les int on utilise l pour les long ; on utilise d pour les double ;
Master SIGLIS21