Récupérer la trace d'une erreur sans ide

Récupérer la trace d’une exception sans IDE

Il arrive que vos programmes fonctionnent bien sous éclipse mais qu’ils ne fonctionnement plus lorsque vous les exportez sous forme de jar exécutable.

Pour comprendre d’où vient l’erreur, il est intéressant de pouvoir récupérer la trace des exceptions qui sont levées lors de l’exécution.

Pour cela, ont peut utiliser un Logger (comme log4j) qui permet de récupérer les logs de l’application dans un fichier. http://logging.apache.org/log4j/1.2/

Ce tutoriel explique comment lancer java en ligne de commande pour récupérer les logs générées.

Pré-requis

Pour récupérer les logs de l’application, il faut que les exceptions ait été gérées correctement. C’est à dire, éviter à tout prix de catcher les RuntimeException comme NullPointerException ou ClassCastException ou encore IndexOutOfBoudException. Et bien sur, il ne faut jamais faire un catch(Exception e).

En effet, si nous disposons d’une méthode lancerApplication qui permet de lancer l’application et que nous créons le lanceur de la manière suivante :

public static void main(String * args){
    try{
        lancerApplication() ;
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, "Erreur");
    }
}

Dans ce cas, on ne pourra pas visualiser la trace de l’exception générée. Tout ce qu’on verra c’est un message qui affichera erreur, mais de toute façon, nous nous serions rendu compte qu’une erreur était survenue sans que ce message soit affiché.

Les exceptions doivent être gérées au cas par cas quand celles-ci se présentent et celles qu’on ne sait pas traiter doivent soit être propagées soit être encapsulées dans une autre exception.

Lancement d’un exécutable en ligne de commande

Pour lancer l’exécution d’un programme java en ligne de commande, il faut commencer lancer une invite de commande sous Windows ou sous une distributions linux.

Dans les deux cas, il faut localiser le chemin d’installation de la jvm : sous Windows, cela peut être C:\Program Files\ jdk16\jdk-1.6.0_20\bin.

Pour lancer java, il suffit alors de lancer la commande suivante :

“C:\Program Files\jdk16\jdk-1.6.0_20\bin\java.exe“

Pour exécuter un .jar exécutable, on lance la commande suivante :

“C:\Program Files\jdk16\jdk-1.6.0_20\bin\java.exe“ -jar “D:\jarExec.jar“

jar étant le fichier jar à exécuter.

Le programme java est alors lancé et la trace de l’exception levée est alors affichée dans la console.

Remarque : Pour lancer l’exécutable sous linux, la commande est la même, il suffit juste d’utiliser les chemins à la mode UNIX.

Récupération de l’exception dans un fichier texte

On peut récupérer la trace de l’exception dans un fichier texte (plus commode à lire que la console), pour cela, on utilise une redirection : >

Après l’appel du programme java, on ajoute la ligne suivante :

“C:\Program Files\jdk16\jdk-1.6.0_20\bin\java.exe“ > “D:\logs.txt“ 2>&1

De cette manière les logs sont enregistrées dans le fichier D:\logs.txt.

Ce document intitulé « Récupérer la trace d'une erreur sans ide » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous