GNT sans publicité, site mobile, fonctionnalitées exclusives...

path relatif entre package et images

Le
yvon.thoravalNO-SPAM
j'ai un ceratins nombre de sous-dossiers dans mon dossier images.

pour l'instant j'appelle les images depuis le package "yt.ui.*" donc mon
arborescence est ainsi :

yt/
dbms/
*.java
sortable/
*.java
tables/
*.java
tests/
*.java
ui/
*.java
images/
flags/
vineplants/
tables/
manage/

donc, charger une image depuis yt.ui.ma_classe se fait par :

<code>
String imgLocation = "images/tables/" + imageName + ".gif";
java.net.URL imageURL = getClass().getResource(imgLocation);
</code>

Avec cette arborescence j'ai deux pbs :

- si je veux accéder à une image dans yt.ui.images.flags depuis
yt.sortable.ma_classe comment est-ce que je fait ?

- je préférerait avoir deux jars l'un "macave.jar" incluant toutes les
classes et l'autre "images.jar" incluant toutes les images, les deux
jars étant placés dans le même répertoire lib/. Dans ce cas quelle
imgLocation dois-je utiliser ? (j'ai essayé "/images/tables/" +
imageName + ".gif" MAIS la resource n'est pas trouvée)
--
yt
Lire les 4 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Xavier Tarrago
Le #745353
Si le nom de ressource commence par /, c'est un nom absolu, il faut qu'il
soit complet:

<code>
String imgLocation = "/yt/ui/images/flags/" + imageName + ".gif";
java.net.URL imageURL = getClass().getResource(imgLocation);
</code>

Pour les jars, je n'ai pas d'expérience, mais je pense que le fait que les
fichiers soient dans deux jars différents ne devrait rien changer. Ce qui
compte, c'est les noms des packages. Ils doivent être les mêmes dans les
deux jars. (penser à les mettre dans le classpath...)

"Yvon Thoraval" news:1gkrjn7.10t1u071qt3db1N%
j'ai un ceratins nombre de sous-dossiers dans mon dossier images.

pour l'instant j'appelle les images depuis le package "yt.ui.*" donc mon
arborescence est ainsi :

yt/
dbms/
*.java
sortable/
*.java
tables/
*.java
tests/
*.java
ui/
*.java
images/
flags/
vineplants/
tables/
manage/

donc, charger une image depuis yt.ui.ma_classe se fait par :

<code>
String imgLocation = "images/tables/" + imageName + ".gif";
java.net.URL imageURL = getClass().getResource(imgLocation);
</code>

Avec cette arborescence j'ai deux pbs :

- si je veux accéder à une image dans yt.ui.images.flags depuis
yt.sortable.ma_classe comment est-ce que je fait ?

- je préférerait avoir deux jars l'un "macave.jar" incluant toutes les
classes et l'autre "images.jar" incluant toutes les images, les deux
jars étant placés dans le même répertoire lib/. Dans ce cas quelle
imgLocation dois-je utiliser ? (j'ai essayé "/images/tables/" +
imageName + ".gif" MAIS la resource n'est pas trouvée...)
--
yt


yvon.thoravalNO-SPAM
Le #745031
Xavier Tarrago
Si le nom de ressource commence par /, c'est un nom absolu, il faut qu'il
soit complet:

<code>
String imgLocation = "/yt/ui/images/flags/" + imageName + ".gif";
java.net.URL imageURL = getClass().getResource(imgLocation);
</code>

Pour les jars, je n'ai pas d'expérience, mais je pense que le fait que les
fichiers soient dans deux jars différents ne devrait rien changer. Ce qui
compte, c'est les noms des packages. Ils doivent être les mêmes dans les
deux jars. (penser à les mettre dans le classpath...)


OK, merci, ça roule, mais question annexe, si par exemple il me manque
une image dans mon images.jar est-ce que je peux la mettre dans le
dossier lib/ ainsi :

images/
path/to/
mon_image_manquante.gif

??? utile dans la période de mise au .
--
yt

Xavier Tarrago
Le #744710
Il faut qu'il soit dans le classpath. getResource() permet d'accéder à des
fichiers qui sont dans le classpath. Après, un chemin dans le classpath (ex
com.mycomp.jolipackage) peut être dispersé dans plusieurs jars ou
répertoires. (sauf effort pour l'empêcher, comme les jars sealed...) C'est
vrai pour toutes les ressources, et en particulier les fichiers de classes
qui sont accédés comme n'importe quelle ressource.

Le dossier lib n'a rien de particulier. Il est ou pas dans le classpath.
Dans le cas d'application web j2ee/servlet, les jars dans le répertoire
WEB-INF/lib et les classes des sou-répertoires de WEB-INF/classes sont
automatiquement ajoutés au classpath au chargement de l'application. C'est
un cas particulier.


"Yvon Thoraval" news:1gkrsee.177we5nlwkayiN%
Xavier Tarrago
Si le nom de ressource commence par /, c'est un nom absolu, il faut
qu'il


soit complet:

<code>
String imgLocation = "/yt/ui/images/flags/" + imageName +
".gif";


java.net.URL imageURL = getClass().getResource(imgLocation);
</code>

Pour les jars, je n'ai pas d'expérience, mais je pense que le fait que
les


fichiers soient dans deux jars différents ne devrait rien changer. Ce
qui


compte, c'est les noms des packages. Ils doivent être les mêmes dans les
deux jars. (penser à les mettre dans le classpath...)


OK, merci, ça roule, mais question annexe, si par exemple il me manque
une image dans mon images.jar est-ce que je peux la mettre dans le
dossier lib/ ainsi :

images/
path/to/
mon_image_manquante.gif

??? utile dans la période de mise au .
--
yt



yvon.thoravalNO-SPAM
Le #744709
Xavier Tarrago
Il faut qu'il soit dans le classpath. getResource() permet d'accéder à des
fichiers qui sont dans le classpath. Après, un chemin dans le classpath (ex
com.mycomp.jolipackage) peut être dispersé dans plusieurs jars ou
répertoires. (sauf effort pour l'empêcher, comme les jars sealed...) C'est
vrai pour toutes les ressources, et en particulier les fichiers de classes
qui sont accédés comme n'importe quelle ressource.

Le dossier lib n'a rien de particulier. Il est ou pas dans le classpath.
Dans le cas d'application web j2ee/servlet, les jars dans le répertoire
WEB-INF/lib et les classes des sou-répertoires de WEB-INF/classes sont
automatiquement ajoutés au classpath au chargement de l'application. C'est
un cas particulier.


OK, merci, ça roule pour moi, maintenant...
--
yt

Publicité
Suivre les réponses
Poster une réponse
Anonyme