Département d'informatique
Laboratoire des Méthodes de Programmation (LAMP)

Compilation     semestre d'hiver 2001-2002
Ecole Polytechnique Fédérale de Lausanne

Compilation et exécution de programmes Java



Organisation

Lorsqu'on compile un programme Java, le compilateur produit un ou plusieurs fichiers classes (extension .class) contenant le code compilé. D'une manière générale, il est conseillé de garder ces fichiers dans un autre répertoire que celui contenant les fichiers source (extension .java).

L'organisation que nous vous conseillons d'adopter est la suivante : dans le répertoire dans lequel vous désirez stocker votre projet Java, créez deux sous-répertoires, l'un nommé sources, l'autre nommé classes.

Le sous-répertoire sources sera votre répertoire de travail principal : vous y placerez vos fichiers sources (.java) ainsi que le Makefile si vous décidez d'utiliser make pour automatiser la compilation.

Le sous-répertoire classes sera quant à lui utilisé uniquement pour stocker les fichier .class produits par le compilateur.

Compilation de programmes Java

Le compilateur Java se lance en tapant la commande javac suivie de la liste des fichiers à compiler. Par défaut, ce compilateur place les fichiers .class dans le répertoire courant. Pour respecter le schéma d'organisation spécifié ci-dessus, il importe donc de lui dire de les placer dans le répertoire classes, ce qui peut se faire au moyen de l'option -d. Par exemple, pour compiler les fichiers fich1.java et fich2.java du répertoire courant et demander au compilateur de placer le résultat dans le répertoire ~/compilation/classes, on tapera :

  javac -d ~/compilation/classes fich1.java fich2.java

Pour plus d'informations au sujet de la commande javac, vous pouvez vous reporter à la documentation de Sun (en anglais).

Exécution de programmes Java

Lorsqu'on a compilé un programme Java et qu'on désire l'exécuter, il faut utiliser la commande java. Cette commande prend en argument le nom d'une classe, la classe principale, suivi d'éventuels arguments pour le programme.

La classe principale doit comporter une méthode statique nommée main ayant le profil suivant :

  public static void main (String[] args)
Cette méthode sera appelée par la commande java et les arguments donnés après le nom de la classe lui seront passés sous forme d'un tableau de chaînes de caractères.

Pour que la commande java trouve les classes dont elle a besoin (en particulier la classe principale), il faut que les fichiers .class correspondant se trouvent dans son chemin de recherche. Ce chemin de recherche est une liste de noms de répertoires (séparés par des ':') dans lesquels les fichiers .class résident, et s'appelle le classpath.

Il y a deux moyens de spécifier le classpath à la commande java : au moyen d'une variable d'environnement ou au moyen d'une option.

La variable d'environnement se nomme CLASSPATH. On peut lui donner une valeur au moyen de la commande setenv (ou export dans les shells dérivés de sh), en tapant par exemple :

  setenv CLASSPATH ~/compilation/classes:.
qui demande à java de chercher les fichier .class dans le répertoire ~/compilation/classes ainsi que dans le répertoire courant.

L'option à passer à la commande java se nomme -classpath. Pour obtenir le même effet que ci-dessus, on peut donc appeler la commande java comme suit:

  java -classpath ~/compilation/classes:. classe_principale

Pour plus d'informations au sujet de la commande java, vous pouvez vous reporter à la documentation de Sun (en anglais).



Last modified: Thu Nov 1 13:54:26 MET 2001