Bonjour
voilà dans un fichier source quand j'ai une instruction du genre
package music;
je fais un javac - d . music/*.java pour compiler
Mais si j'ai une instruction du genre
package polymorphism.music;
comment je fais pour compiler
Merci
Bonjour
voilà dans un fichier source quand j'ai une instruction du genre
package music;
je fais un javac - d . music/*.java pour compiler
Mais si j'ai une instruction du genre
package polymorphism.music;
comment je fais pour compiler
Merci
Salut,
Il faut faire javac polymorphism/music/*.java.
PS : Je ne vois pas l'intéret d'utiliser l'option -d avec .(point).
A+
Hydraland
c'est vrai que ça marche aussi bien sans.
Merci
Salut,
C'est normal puisque c'est la valeur par défaut !
Pour ton problème il faut définir le classpath (qui contiendra les répertoires de base contenant les fichiers *.class) et le sourcepath (qui contiendra les répertoires de base contenant les fichiers *.java).
Par répertoire de base, je parle du répertoire qui contient le premier répertoire de l'arborescence des packages).
Perso je te conseillerais l'arborescence de travail suivante :
- /src qui contiendra l'arborescence de tes sources
- /bin, qui contiendra l'arborescence de tes classes une fois compilé
- /lib, qui contiendra tes librairies annexes (*.jar)
Par exemple avec tes packages music et polymorphism.music, tu aurais sous le répertoire src l'arborescence suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4src/ music/ package/music
Et tu compiles depuis le répertoire de base en spécifiant les paramètres classpath, sourcepath, et -d (/projet étant le répertoire qui accueillera ton projet) :
(j'ai mis sur plusieurs lignes seulement pour que ce soit plus lisible)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 javac -classpath /projet/bin:/projet/lib/* -sourcepath /projet/src -d /projet/bin ton_fichier.java
- Le classpath permet de définir l'emplacement des class déjà compilé. Ici on spécifie le répertoire bin qui contiendra tes propres codes, et les archives du répertoire lib (attention l'étoile * ne fonctionne que sous Java 6, avec les versions précédentes il faut spécifier tous les jar un à un).
Remarque : le séparateur de path est : sous Linux et ; sous Windows...
Lorsque tu compiles un fichier, les classes importé sont recherché dans le bootclasspath (qui comporte les classes de l'API), puis dans le classpath si elle ne sont pas trouvé.
Donc si tu ne spécifies pas le classpath le compilateur ne pourra pas retrouver les classes importées...- Le sourcepath permet d'indiquer au compilateur l'emplacement de tes sources java. Si tu importes une classe qui n'est pas trouvé dans le classpath, le compilateur la recherchera dans le sourcepath et la compilera avant de continuer la compilation de ta classe
- Enfin l'option -d permet de placer les classes compilées sous le répertoire bin, en respectant l'arborescence des répertoires.
A noter une petite astuce, on peut définir les options dans un fichier texte et le spécifier avec @ dans la commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part javac @/projet/file *.java
Maintenant, si on veut des processus de compilation plus évolué, on peut se tourner vers Ant ou autres
a++
Partager