Extra: exemples d’erreurs #
Contexte: projet awale
#
-
Télécharger exemples_erreurs.zip et extraire l’archive
-
En VSCode, ouvrir le répertoire racine, c-à-d celui qui contient
setttings.gradle
Erreur 1: Gradle bloque au début #
-
Je veux lancer le projet
$ sh gradlew awale -
J’ai cette erreur:
Configuring project ':pong' without an existing directory is not allowed. -
Dans VSCode je n’ai pas de projets java:
-
Mais j’ai une
Gradle: Build Error
-
en cliquant je vois que c’est la même erreur de répertoire non-existant
-
par contre, l’erreur VSCode ci-bas est un faux positif et peut être ignoré:
-
Solution 1 #
- Dans
settings.gradle- retirer le
include 'pong'- (qui fait référence à un répertoire qui n’existe pas)
- retirer le
-
Vérifier que ça compile
$ sh gradlew build [...] BUILD SUCCESSFUL in 662ms -
Relancer VSCode ou encore faire un Clean Workspace
Erreur 2: Gradle fait Task not found #
-
Je veux lancer le projet
$ sh gradlew awale
-
J’ai cette erreur:
Task 'awale' not found in root project 'racine4f5' and its subprojects -
En VSCode, le projet
awalen’apparaît pas
Solution 2 #
- Dans
settings.gradleajouter la ligneinclude 'awale'
-
Vérifier que
awaleest dans la liste des projets$ sh gradlew projects [...] project ':awale' - /awale -
Relancer VSCode ou encore faire un Clean Workspace
Erreur 3: Gradle fait Class not found #
-
Je veux lancer le projet
$ sh gradlew awale -
J’ai cette erreur
> Task :awale:awale FAILED Erreur : impossible de trouver ou de charger la classe principale depart.AppDepart Causé par : java.lang.ClassNotFoundException: depart.AppDepart
Solution 3 #
-
Dans
awale/build.gradledéclarer la classe principale telle qu’elle est dans le codentroProject.appClass = "depart.AppPong" -
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...]
Erreur 4: mauvais nom de paquet #
-
Le nom du paquet principal devrait être comme le nom du projet
- projet:
awale - paquet:
depart❌
- projet:
Solution 4 #
-
En VSCode, renommer le paquet avec F2
-
S’assurer de mettre à jour le nom de la classe principale dans le
build.gradlentroProject.appClass = "awale.AppPong" -
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...]
Erreur 5: mauvais nom de classe #
-
Le nom de la classe principale devrait faire référence à Awalé
- en ce moment:
awale.AppPong❌ - devrait être:
awale.AppAwale
- en ce moment:
Solution 5 #
-
En VSCode, renommer la classe avec F2
-
S’assurer de mettre à jour le nom de la classe principale dans le
build.gradlentroProject.appClass = "awale.AppAwale" -
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...]
Erreur 6: fx:controller
#
-
fx:controller class not found$ sh gradlew awale [...] [FATAL] (parametres.fxml:8) class not found: depart.frontal.vues.VueParametres details: awale/_storage/tmp/exception_lh0R.log [...] [FATAL] (partie.fxml:26) fx:controller class not found: depart.frontal.vues.VuePartie details: awale/_storage/tmp/exception_lh0R.log [...] [FATAL] (racine.fxml:23) class not found: depart.frontal.vues.VueRacine details: awale/_storage/tmp/exception_lh0R.log
Solution 6 #
-
Dans le
.fxml, s’assurer quefx:controllerest le nom complet d’une Vue qui existe dans le projet -
Modifier
parametres.fxml:fx:controller="awale.frontal.evenements.FileAttenteVue" -
Modifier
partie.fxml:fx:controller="awale.frontal.vues.VuePartie" -
Modifier
racine.fxml:fx:controller="awale.frontal.vues.VueRacine" -
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...]
Erreur 7: resource "%var" not found
#
-
Resource "%var" not found$ sh gradlew awale [...] [FATAL] (partie.fxml:39) Resource "quitter" not found.
Solution 7 #
-
On utiliser
%quitterdans le.fxml, s’assurer quequitterexiste dans les.properties-
resources/traductions/fr.propertiesretour=Exit Game # retirer quitter=Exit Game -
resources/traductions/en.propertiesretour=Quitter # retirer quitter=Quitter
-
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 8: attribut erroné dans le .json du modèle
#
-
field not found$ sh gradlew restoreJson $ sh gradlew awale [...] [FATAL] (AppAwale.java:18) field not found: PartieEnFile.prenomJoueurA
Solution 8 #
-
Vérifier
awale/_storage/models/FileAttente.jsonet s’assurer que le.jsoncorrespond au modèle{ "_C": "PartieEnFile", "idPartie": "1", "scoreJoueurB": 6, "scoreJoueurA": 2, "nomJoueurA": "Gregson", "nomJoueurB": "Alice", "idJoueurA": "gregson", "idJoueurB": "alice" }
Erreur 9: classe manquante dans le .json du modèle
#
-
ClassCastException [...] HashMap ... PartieEnFile$ sh gradlew restoreJson $ sh gradlew awale [...] [FATAL] (FileAttente.java:34) ClassCastException class java.util.HashMap cannot be cast to class awale.commun.valeurs.PartieEnFile (java.util.HashMap is in module java.base of loader 'bootstrap'; awale.commun.valeurs.PartieEnFile is in unnamed module of loader 'app')
Solution 9 #
-
Vérifier
awale/_storage/models/FileAttente.jsonet s’assurer d’avoir le attributs spéciaux"_C"{ "_C":"PartieEnFile", "idPartie": "0", "scoreJoueurB": 4, "nomJoueurA": "Ashwin", "scoreJoueurA": 2, "nomJoueurB": "Marcel", "idJoueurA": "ashwin", "idJoueurB": "marcel" } -
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 10: mauvais nom AjouterPartieMsg
#
- La classe
AjouterPartieMsgdevrait s’appelerMsgAjouterPartie
Solution 10 #
-
Avec F2, renommer
AjouterPartieMsg=>MsgAjouterPartie
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 11: mauvais nom FileAttente
#
- La classe
FileAttentedevrait s’appelerModeleFileAttente
Solution 11 #
-
Avec F2, renommer
FileAttente=>ModeleFileAttente
-
Renommer le fichier
awale/_storage/models/FileAttente.jsonFileAttente.json=>ModeleFileAttente.json
-
Dans le fichier
.json, ajuster la valeur l’attribut spécial"_C"{ "_C": "ModeleFileAttente", -
Sauvegarder le json
$ sh gradlew saveJson
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 12: mauvais nom DorsalPong
#
- La classe
DorsalPongdevrait s’appelerDorsalAwale
Solution 12 #
-
Avec F2, renommer
DorsalPong=>DorsalAwale
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 13: mauvais noms AfficherPartie et vueFileAttente
#
-
L’événement
AfficherPartiedevrait s’appelerEvtAfficherVuePartie -
La classe
vueFileAttenteest en fait un événement et devrait s’appelerEvtAfficherVueFileAttente
Solution 13 #
-
Avec F2, renommer
AfficherPartie=>AfficherVuePartievueFileAttente=>EvtAfficherVueFileAttente
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 14: mauvais nom et mauvais paquet pour FileAttenteVue
#
-
La classe
FileAttenteVuedevrait s’appelerVueFileAttente -
La classe est dans le paquet
evenementmais devrait être dans le paquetvues
Solution 14 #
-
Avec F2, renommer
FileAttenteVue=>VueFileAttente.java
-
Pour déplacer:
- ouvrir le fichier VueFileAttente.java
- placer le curseur sur le nom de la classe
- Maj+Ctrl+R (ou clique-droit => refactor)
- déplacer (move)
- sélectionner le paquet
vues
-
Comme on a modifié une Vue, il faut mettre à jour le fichier
parametres.fxmlfx:controller="awale.frontal.vues.VueFileAttente"
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 15: mauvais nom pour le groupe de tâche "CreerVues"
#
- Le nom est
"creerLesVues"mais devrait être"CreerVues"comme la classe
Solution 15 #
-
Dans CreerVues.java, renommer
"creerLesVues"=>"CreerVues"
-
Dans PremierAffichage.java, renommer
waitsFor("creerLesVues")=>waitsFor("CreerVues")
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 16: mauvais nom de tâche tacheA1
#
- Le nom devrait être
creerVueFileAttente
Solution 16 #
-
Avec F2, renommer
tacheA1=>creerVueFileAttente
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 17: mauvais nom de tâche "placerLaVueRacine"
#
-
Dans
PremierAffichage.java- la tâche devrait s’appeler comme la méthode
"installerVueRacine"
- la tâche devrait s’appeler comme la méthode
Solution 17 #
-
Ouvrir
PremierAffichage.javaet renommer"placerLaVueRacine"=>"installerVueRacine"
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 18: mauvais nom FrontalPong
#
- Le nom devrait être
FrontalAwale
Solution 18 #
-
Avec F2, renommer
FrontalPong=>FrontalAwale
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Erreur 19: mauvais nom de fichier parametres.fxml
#
- Si c’est une
VueFileAttente, le fichier devrait êtrefile_attente.fxml
Solution 19 #
-
Avec F2, renommer
parametres.fxml=>file_attente.fxml
-
Il faut aussi changer la déclaration dans
FrontalAwaleregistrar.registerView(VueFileAttente.class, "/vues/parametres.fxml"); // avant registrar.registerView(VueFileAttente.class, "/vues/file_attente.fxml"); // après
-
Vérifier
$ sh gradlew awale [INFO] Ntro version 0.1 [INFO] App running. Press Enter or Ctrl+D to close App [...] # la fenêtre s'affiche correctement
Comparaison avec IA #
-
Outil: le chat dans VSCode
-
Modèle:
- essai 1:
- chat GPT-5-mini
- 15 minutes
- 5 interventions humaines
- indiquer de continuer
- choisir entre deux options
- fermer la fenêtre après un
sh gradlew awaleréussi
- interventions plus importante pour corriger le fichier
.json(erreurs 8 et 9)
- essai 2:
- chat GPT-4o
- 5 minutes de modifications aux fichier et coincé à 13 erreurs de compilation
- essai 3:
- chat GPT-4o
- cette fois-ci quelques renommages avant de tester l’exécution
- on est descendu à 1 erreur de compilation, avant de remonter à 5 erreurs
- essai 4:
- chat GPT-5-mini
- 35 minutes
- ~15 interventions humaines
- indiquer de continuer (plusieurs fois)
- insister qu’il faut “exécuter l’application et corriger les erreurs”
- fermer la fenêtre après un
sh gradlew awaleréussi
- après 20 minutes: l’application s’est exécuté une fois, mais il manquait les données
- en continuant, l’IA a introduit ~10 erreurs de compilations (et on est resté bloqué là)
- essai 5:
- chat GPT-5-mini
- 5 interventions humaines
- indiquer de continuer
- choisir entre deux options
- fermer la fenêtre après un
sh gradlew awaleréussi
- après 10 minutes, le projet exécutait mais avec une fenêtre vide
- essai 1:
-
Contexte
- fichier regles.md pour les instructions
- répertoire
awaleoù se trouve le projet - fichiers
settings.gradleetawale/build.gradlepour la configuration Gradle
-
Énoncé
En suivant les régles de regles.md, SVP trouver les erreurs dans le projet awale et suggérer des correctifs. En particulier, i) s’assurer que le projet s’exécute via la ligne de commande, ii) s’assuer que les noms (de classes, de tâches, etc.) respecte le style énoncé dans regles.md.
Résultats #
Erreurs introduites par l’IA #
| essai 1 |
|
|---|---|
| essai 2 |
|
Erreurs du tutoriel #
| Erreur trouvé par IA? | Solution trouvée par IA? | ||
|---|---|---|---|
| Erreur 1 | essai 1 | Oui | Oui |
| essai 5 | |||
| Erreur 2 | essai 1 | Oui | Oui |
| essai 5 | |||
| Erreur 3 | essai 1 | Oui | Oui |
| essai 5 | |||
| Erreur 4 | essai 1 | Oui | Oui |
| essai 5 | |||
| Erreur 5 | essai 1 | Oui | Oui |
| essai 5 | |||
| Erreur 6 | essai 1 | Oui | Oui |
| essai 5 | |||
| Erreur 7 | essai 1 | Oui | Oui |
| essai 5 | Oui | Oui | |
| Erreur 8 | essai 1 | Oui | Non (mauvaise solution) |
| essai 5 | Oui | Oui | |
| Erreur 9 | essai 1 | Oui | Non (mauvaise solution) |
| essai 5 | Oui | Noui (solution partielle) | |
| Erreur 10 | essai 1 | Oui | Non |
| essai 5 | Non | Non | |
| Erreur 11 | essai 1 | Oui | Oui |
| essai 5 | Non | Non | |
| Erreur 12 | essai 1 | Oui | Oui |
| essai 5 | Oui | Oui | |
| Erreur 13 | essai 1 | Oui | Oui |
| essai 5 | Oui | Non | |
| Erreur 14 | essai 1 | Oui | Non |
| essai 5 | Oui | Oui | |
| Erreur 15 | essai 1 | Non | Non |
| essai 5 | Non | Non | |
| Erreur 16 | essai 1 | Non | Non |
| essai 5 | Non | Non | |
| Erreur 17 | essai 1 | Non | Non |
| essai 5 | Non | Non | |
| Erreur 18 | essai 1 | Oui | Non |
| essai 5 | Oui | Non | |
| Erreur 19 | essai 1 | Non | Non |
| essai 5 | Non | Non |