Les lignes de commande utiles
Licence info S5
TP COMPIL –
1 Pour utiliser Java
Vous devez modifier votre fichier .bashrc qui est dans votre HOME, cf
http://intranet.fil.univ-lille1.fr/INTRANET/LOGICIELS/java.html
2 Commandes Java
Vous avez appris en POO `a structurer votre r´epertoire de travail de telle sorte que :
les sources (.java) soient dans un r´epertoire src ;
les classes (.class) soient dans un r´epertoire classes ou bin.
Il n’est pas pratique de passer son temps `a entrer dans et sortir de ces r´epertoires : il est bien plus simple
de taper les lignes de commande en restant dans le r´epertoire de travail.
2.1 Compilation
NB : une alternative avantageuse au paragraphe qui suit est d’apprendre `a utiliser Ant (un make
sp´ecial Java), mais ce n’est pas le propos de COMPIL.
Pour compiler, si on a une classe maˆıtresse (qui contient le main) on peut utiliser le calcul des
d´ependances du compilateur :
javac -d classes -sourcepath src -classpath classes src/<nomPaquetage>/<nomClasseMaitresse>.java
L’option -d indique le r´epertoire pour ´ecrire les .class, l’option -sourcepath indique le r´epertoire o`u
chercher les .java et l’option -classpath indique le r´epertoire o`u chercher les .class (pour ne pas
recompiler un fichier inutilement). Pour voir la diff´erence avec une compilation brutale, on peut essayer
avec l’option -verbose :
javac -d classes ‘ls src/<nomPaquetage>/*.java‘
Si les sources `a compiler utilisent des classes (.class) qui sont ailleurs, soit dans le r´epertoire d’un
autre TP, soit dans une archive .jar quelque part, il faut indiquer `a javac le r´epertoire de ces classes.
On peut continuer `a utiliser l’option -classpath :
javac -d classes -classpath <chemindacces>/toto.jar:classes -sourcepath src
src/<nomPaquetage>/<nomClasseMaitresse>.java
Comme g´en´eralement les chemins d’acc`es sont `a rallonge, on en a rapidement assez de taper tout ¸ca.
Une premi`ere solution est d’enregistrer la ligne de commande dans un fichier (par exemple compil.sh)
et de lancer juste sh compil.sh.
On peut aussi ´eviter l’option -classpath en utilisant la variable d’environnement Java CLASSPATH. Sa
valeur par d´efaut (c’est le cas sur votre compte) indique le r´epertoire courant : les fichiers et paquetages
du r´epertoire courant sont toujours disponibles. Quand elle est utilis´ee, l’option -classpath substitue
son argument `a CLASSPATH. Vous pouvez consulter votre CLASSPATH par :
echo $CLASSPATH
Comme on utilise presque toujours le mˆeme nom de r´epertoire pour stocker les .class, on peut configurer
la variable CLASSPATH dans le fichier de d´emarrage .bashrc qui est dans votre HOME par :
CLASSPATH=classes:class:bin:.
export CLASSPATH
Ainsi, au d´emarrage, dans n’importe quel terminal on aura :
> echo $CLASSPATH
classes:class:bin:.
TP COMPIL
TP COMPIL Les lignes de commande utiles
(pour ´eviter de red´emarrer, on peut temporairement faire un source /.bashrc dans les terminaux
qu’on utilise).
Par contre, il n’est pas souhaitable de cabler en dur dans son CLASSPATH via le fichier bashrc tous
les .jar divers et vari´es que vous utilisez lors de votre ann´ee, car rapidement le CLASSPATH devient
compl`etement illisible. Il est bien plus pratique de se faire des scripts, par exemple envCompil.sh conte-
nant :
export CLASSPATH=<chemindacces>/toto.jar:<chemindacces>/titi.jar:$CLASSPATH
Ensuite, dans chaque terminal qu’on utilise, on lance source envCompil.sh. Bien utiliser source et
pas sh. En effet, sh cr´ee un processus, positionne la variable CLASSPATH dedans, puis referme ce processus,
ce qui au final n’a aucun effet dans le terminal ! Ainsi votre CLASSPATH contiendra ce que vous y avez mis
dans le bashrc, plus l’acc`es `a toto.jar et titi.jar.
2.2 Ex´ecution
La classe ex´ecutable se trouvant dans le r´epertoire classes,java ne la voit pas directement depuis
le r´epertoire de travail. Il n’est pas question de faire un
java classes/<nomPaquetage>/<comclasseMaitresse>.class car java attend un nom qualifi´e absolu
de classe, pas un .class.
Comme pour la compilation, il suffit d’avoir le r´epertoire classes soit sur la ligne de commande avec
-classpath, soit via la variable CLASSPATH. On peut alors ´ecrire :
java -classpath classes nomPaquetage.nomClassePrincipale
3 Scripts et variable PATH
On prend vite goˆut aux scripts divers et vari´es (pour compiler, lancer l’application, nettoyer les fichiers
g´en´er´es, lancer des tests, fabriquer une archive, etc). On gagne ainsi un temps consid´erable. Mais on se
retrouve avec un r´epertoire de travail rempli de scripts !
Pour garder un espace de travail clair et ordonn´e, il suffit de cr´eer dans le r´epertoire de travail (au
mˆeme niveau que les r´epertoires src et classes) un r´epertoire script. Pour ´eviter d’entrer et sortir de
ce r´epertoire d`es qu’on souhaite ex´ecuter un script, il suffit de positionner la variable PATH. Cette variable
Unix contient le chemin des programmes ex´ecutables. Vous pouvez visualiser son contenu par :
echo $PATH
Pour ajouter le r´epertoire scripts `a votre PATH, il suffit d’ajouter dans votre fichier envCompil.sh :
export PATH=scripts:$PATH
Ensuite vous pourrez directement lancer le script qui vons int´eresse depuis le r´epertoire de travail (et
utiliser la compl´etion par tabulation).
2 Licence info S5
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !