Créer un répertoire, de nom codecorrecteur par exemple, pour le projet :
mkdir codecorrecteur
Se placer dans ce répertoire codecorrecteur et ne plus en bouger pour toutes les commandes qui suivent :
cd codecorrecteur
mkdir src\eg.ufe.codecorrecteur\eg\ufe\codecorrecteur
(pour classe Bloc
du premier module)
mkdir src\eg.ufe.codecorrecteur\eg\ufe\testcodecorrecteur
(pour classe TestBloc
du premier module)
mkdir src\testcodecorrecteur\eg\ufe\test
(pour classe TestBloc2
du deuxième module)
Placez au bon endroit les fichiers Bloc.java
et TestCode.java
dans le répertoire src
, en modifiant éventuellement le code de l'exercice sur les codes correcteurs pour tenir compte du nom du paquetage et des imports.
Créez module-info.java
dans le répertoire du module. Indiquez que le paquetage de la classe Bloc
est exporté par ce module.
Voici le code des fichiers du module module-info.java, Bloc.java, TestCode.java.
Placez au bon endroit le fichier TestCode2.java
dans le répertoire src
. Écrivez son code.
Réponse à la question posée dans l'énoncé : cette classe pourrait s'appeler TestCode
. Ca n'aurait posé aucun problème puisque l'autre classe TestCode
n'est pas dans le même paquetage.
Créez module-info.java
dans le répertoire du module. Indiquez que ce module dépend du premier module.
Voici le code des fichiers du module module-info.java, TestCode2.java.
A taper sur une seule ligne :
javac --module-path mods -d mods --module-source-path src ./src/eg.ufe.codecorrecteur/eg/ufe/codecorrecteur/*.java ./src/eg.ufe.codecorrecteur/eg/ufe/testcodecorrecteur/*.java ./src/testcodecorrecteur/ufe/test/*.java ./src/eg.ufe.codecorrecteur/module-info.java ./src/testcodecorrecteur/module-info.java
On obtient le message d'erreur suivant :
.\src\testcodecorrecteur\ufe\test\TestCode2.java:4: error: package eg.ufe.testcodecorrecteur is not visible
import eg.ufe.testcodecorrecteur.TestCode;
^
(package eg.ufe.testcodecorrecteur is declared in module eg.ufe.codecorrecteur, which does not export it)
Ce qui normal car TestCode2
utilise une classe du module eg.ufe.codecorrecteur
, qui appartient au paquetage eg.ufe.testcodecorrecteur
qui n'a pas été exporté par le module eg.ufe.codecorrecteur
.
Il suffit d'exporter ce paquetage pour que tout compile. Pour cela, ajouter cette ligne dans module-info.java
du module eg.ufe.codecorrecteur
:
exports eg.ufe.testcodecorrecteur;
Remarque : Pour compiler, vous pouvez relancer la même commande mais maintenant que eg.ufe.testcodecorrecteur
est connu du deuxième module, on peut compiler plus simplement en tapant la commande
javac --module-path mods -d mods --module-source-path src ./src/testcodecorrecteur/ufe/test/*.java
puisque javac va trouver le source du premier module grâce à l'option --module-source-path
.
java --module-path mods -m testcodecorrecteur/eg.ufe.test.TestCode