-
Emplacement des packages
Bonjour,
Pouvez vous me donner des précisions sur les packages.
J'ai fait une classe ConnectMysql qui devrait me servir dans plusieurs projets pour se connecter et fermer ma base Mysql et autres utilitaires.
Cette classe n'est pas dans un projet et je l'ai mise dans mon workspace dev_test sous fr/pl/mysql,
j'ai donc un chemin c:/users/dev_test/fr/pl/mysql/ConnectMysql.java
Lorsque je fais un import fr.pl.mysql.* (ou fr.pl.mysql.ConnectMysql) dans un projet j'ai l'erreur suivante : "The import fr cannot be resolved", çà veut donc dire qu'il ne trouve pas le chemin de cette classe ?
Ce fr.pl.mysql veut il dire qu'il doit le chercher dans le projet en cours ? et si oui alors comment indiquer à l'import de le chercher où il se trouve ?? car je ne tiens pas recopier cette classe dans chaque projet.
Merci de vos réponses.
Cordialement.
-
Tu dois juste ajouter le projet dev_test au build path de tes autres projets, de façon assez semblable à utiliser une bibliothèque tierce.
Sinon ils ne vont pas savoir où ils sont censés aller chercher le package fr (ni tout ce qui suit.)
-
dev_test n'est pas un projet mais mon workspace d'Eclipse
Le fait de déclarer un package xx.xx... (ou import xx.xx...) est il mis automatiquement à la base du projet en cours ou peut il se trouver ailleurs sur le disque ?
Donc ma question reste la même, Lorsque je fais un import fr.pl.mysql.*, va t il chercher la classe dans le projet en cours ou faut il lui indiquer le chemin pour lui dire que la classe se trouve, non pas dans un autre projet, mais directement dans un chemin du workspace.
Ou encore faut il faire un .jar de ma classe et m'en servir comme jar externe ??
Merci par avance.
-
Bonjour,
Lorsque tu fais "import ....", le compilateur va chercher ce que tu importes dans un ensemble de classes connues. Cet ensemble est composé, entre autres :
- de l'environnement d'exécution (JRE)
- des bibliothèques externes (JAR) référencées
- Dans le cas d'un éditeur digne de ce nom, tu as en plus la possibilité d'aller chercher les classes dans un autre projet en cours d'édition. Mais cela est propre à l'éditeur.
Dans aucun cas, l'éditeur va savoir de lui même que dans tel ou tel répertoire, il trouvera des classes Java (j'imagine non compilées qui plus est).
Puisque tu es sous Eclipse, je ne peux que tu conseiller de créer un projet spécifique pour ces classes utilitaires et référencer ce projet en tant que dépendance dans tous les projets qui en auront besoin.
[Edit] : je n'avais pas vu que tu avais précisé que tu es sous Eclipse :)
-
Oui je crois que ta solution de créer un projet dédié uniquement aux utilitaires est une bonne idée.
Merci.
-
Mais je reviens quand même à ma question :
Quand je déclare package xx.xx... au début d'une classe, à quel emplacement du disque est elle placée par défaut quand je sauvegarde ??
dans le répertoire du projet en cours ou dans un environnement défini ??
Merci.
-
Ce que tu tapes dans le fichier n'a pas d'incidence sur l'endroit où le fichier est enregistré : il est enregistré là où tu l'as créé. Il n'y a pas de "par défaut" que je sache. Quand on fait un nouveau fichier dans un IDE, on commence par dire où on le fait.
En revanche, cette déclaration package implique que tu as le devoir d'avoir mis ce fichier dans le sous-répertoire xx/xx de la racine classpath du projet. La plupart du temps on ne la tape pas soi-même, l'IDE la génère en fonction de l'endroit où tu crées ta classe.
-
Merci de cette précision, je considère donc que la déclaration package se place sous la racine de mon projet en cours.
Alors comme disait Oussapik, créer un projet dédié aux utilitaires est une bonne idée afin de référencer ce projet en tant que dépendance dans tous les projets qui en auront besoin, ou encore la solution de faire un .jar de ces utilitaires et de s'en servir comme jar externe.
Quelle est la solution optimale ?
Merci.
-
C'est la même chose. Un projet qui sert de dépendance aux autres, sera à terme distribué sous forme de jar. L'intérêt de le garder sous forme de projet, est que tu peux le faire évoluer en même temps que tu fais évoluer ceux qui s'en servent.
-
Merci de vos réponses et bonne journée.