Tenir un journal d’erreurs

Voici un stacktrace qui peut paraître inhabituel aux premiers abords:

java.lang.NoClassDefFoundError: test/CSVTest
Caused by: java.lang.ClassNotFoundException: test.CSVTest
  at java.net.URLClassLoader$1.run(Unknown Source)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
Exception in thread "main"

Une première lecture de ce message mènerais à penser que Java n’arrive pas à trouver la classe qu’on vient de lancer avec un run. Après tout le ClassNotFoundException mentionne bien la classe en question. Mais cela n’a aucun sens.

Un deuxième réflexe serait de lancer « Project>Clean… ». Il est toujours possible que l’IDE a des soucis pour compiler toutes les classes et qu’un fichier class soit absent. Mais ce n’est pas non plus la solution.

Evidemment, les développeurs plus experimentés savent que ce genre d’Exception est le plus souvent lié à un package manquant. Ce qui fut bien le cas ici car j’avais supprimé spring.jar sans reconfigurer les bibliothèques dans les propriétés du projet.

Ce genre d’erreur peut prendre du temps à résoudre si on y est confronté pour la première fois. C’est pourquoi tenir un journal d’erreurs (voir modèle ci dessous) est une bonne idée lorsqu’on démarre avec un nouveau langage ou framework. Celui-ci vous évitera de rester bloqué sur des problèmes déjà rencontrés et de mieux avancer dans la réalisation de vos applications.

Date: 13/03/2011
Message d’erreur: java.lang.NoClassDefFoundError
Cause: JAR supprimé manuellement du dossier lib
Solution: Remettre le jar ou l’enlever du build path

– James Poulson.

Premier post

Bonjour,

Voici un premier post pour baptiser mon blog sur developpez.com. Son but est de faire partager mes avancées en matière de programmation, de servir de référence pour des développeurs débutants et susciter un retour de des professionnels du milieu.

Mon langage de préférence est le Java que j’ai approfondi notamment à travers blackbeltfactory.com. Mais j’ai un peu de pratique dans d’autres langages que je compte approfondir dans les mois à venir.

– James Poulson.