# Java > Interfaces Graphiques en Java > AWT/Swing >  [ResourceBundle] emplacement du fichier properties

## zaboug

Bonjour,

j'ai un peu honte de poster un problme si bte, mais bon...
Je veux internationaliser mon application. Pour se faire j'utilise un ResourceBundle comme propos dans le tuto de sun.
Je commence tout petit pour bien dmarrer, et forcment a ne marche pas. 

Je me retrouve avec l'erreur suivante :



> Caused by: java.util.MissingResourceException: Can't find bundle for base name fr.statlife.LAM.IHM.MessagesBundle, locale fr_FR
> 	at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1427)
> 	at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1250)
> 	at java.util.ResourceBundle.getBundle(ResourceBundle.java:777)
> 	at fr.statlife.LAM.IHM.FenetreLAM.setEtatInitial(FenetreLAM.java:154)
> 	at fr.statlife.LAM.IHM.FenetreLAM.<init>(FenetreLAM.java:117)
> 	at fr.statlife.LAM.IHM.FacadeIHM.<init>(FacadeIHM.java:33)
> 	at fr.statlife.LAM.IHM.FacadeIHM.<init>(FacadeIHM.java:31)
> 	at fr.statlife.LAM.IHM.FacadeIHM$SingletonHolder.<clinit>(FacadeIHM.java:43)
> 	... 10 more


J'ai bien compris qu'il ne trouvait pas mon fichier properties. 
Grce  ce post, j'ai cru comprendre qu'il fallait que le fichier properties soit nomm du nom de la classe et qu'il faut l'ajouter dans le classpath (mais je suis pas sur car l'auteur du premier message exposant le problme l'a effac...).
Donc mon problme vient sans doute de l'utilisation d'clipse : je dbute en Java et avec cet IDE et j'ai du louper un truc.

J'ai mis mon fichier properties dans un dossier ressources situ  la racine du projet. J'ai donc l'arborescence suivante :


```

```

J'ai ajout le dossier ressource au classpath via Eclipse en suivant ce qui tait indiqu ici

et dans le code, je rcupre le MessageBundle ainsi :


```

```

est ce que le problme vient du nommage du fichier bundle? de son emplacement? ou du classpath?  ::aie::

----------


## sinok

En fait ton problme vient du fait que tu as mis ton ressource bundle dans un arboresence  part (le dossier ressources) qui n'est pas considr par eclipse comme un dossier source, donc ne l'ajoute pas au classpath.

Il suffit que tu mettes ton bundle au niveau des classes dans le dossier src et l'affaire sera joue.

----------


## adiGuba

Salut,




> j'ai cru comprendre qu'il fallait que le fichier properties soit nomm du nom de la classe


Plus prcisment il est interprt comme une classe. D'ailleurs il est possible d'utiliser une classe Java  la place du fichier **.properties*.

J'ai l'impression que tu donne le nom entier "fr.statlife.LAM.IHM.MessagesBundle_fr_FR.properties"  ton fichier, alors que tu devrais avoir un fichier nomm "MessagesBundle_fr_FR.properties" dans le package "fr.statlife.LAM.IHM", c'est  dire le dossier "fr/statlife/LAM/IHM"


a++

----------


## zaboug

merci pour vos rponses.

il me semblait pourtant avoir test en mettant le fichier bundle dans le package IHM... mais j'avais pas du l'ajout au classpath  ce moment l.

Bref, je suis sur autre chose de plus urgent l, mais ds que j'ai un moment, je teste a et je reviens mettre un jolie "rsolu"  cette discussion  ::ccool::

----------


## zaboug

> Salut,
> 
> Plus prcisment il est interprt comme une classe. D'ailleurs il est possible d'utiliser une classe Java  la place du fichier **.properties*.
> 
> J'ai l'impression que tu donne le nom entier "fr.statlife.LAM.IHM.MessagesBundle_fr_FR.properties"  ton fichier, alors que tu devrais avoir un fichier nomm "MessagesBundle_fr_FR.properties" dans le package "fr.statlife.LAM.IHM", c'est  dire le dossier "fr/statlife/LAM/IHM"


en effet, c'est ce que j'avais fait. Je suis donc repartie de zero : j'ai mis mon fichier MessagesBundles_fr_FR.properties dans le package fr.statlife.LAM.IHM




> En fait ton problme vient du fait que tu as mis ton ressource bundle dans un arboresence  part (le dossier ressources) qui n'est pas considr par eclipse comme un dossier source, donc ne l'ajoute pas au classpath.
> 
> Il suffit que tu mettes ton bundle au niveau des classes dans le dossier src et l'affaire sera joue.


ok, mais en mettant juste le fichier bundle au bon endroit (comme dit ci-dessus), j'ai toujours la mme erreur...  ::?: 
le fait de mettre le fichier properties dans le package ne l'ajoute pas directement au classpath?
dans Eclipse, en cliquant droit sur le fichier, il y a moyen de faire un "add to build path", mais j'ai test et a ne marche pas non plus.

Y'a un truc qui m'chappe...  ::aie::

----------


## adiGuba

> j'ai mis mon fichier MessagesBundle*s*_fr_FR.properties


Vrifies qu'il n'y ai pas de fautes de frappes. Il n'y avait pas de "s"  "MessagesBundle" dans ton prcdent message...


a++

----------


## zaboug

vrification faite : la faute de frappe est dans le post : j'ai bien un fichier MessagesBundle_fr_FR.properties et dans le code :


```

```

une autre ide ?  :;):

----------


## adiGuba

Mais maintenant c'est ton code qui est diffrent... puisque tu n'indiques plus le mme nom (il n'y a plus de package).

O est ton fichier exactement ?Quel est le code exact que tu utilises ?

a++

----------


## zaboug

je n'ai pas remis le nom du package suite  ton premier message o tu disais que c'tait inutile...

le fichier properties se nomme MessagesBundle_fr_FR.properties
il est situ dans l'aroborescence suivante :


```

```

Le code exacte que j'utilise est le suivant : 


```

```

pour faire tout a, je me suis inspire du tuto i18n de Java

le truc que je n'ai pas encore bien compris, c'est s'il faut ajouter le fichier MessagesBundle_fr_FR.properties au classpath ou pas, et si oui, comment (sous Eclipse)?

----------


## adiGuba

> je n'ai pas remis le nom du package suite  ton premier message o tu disais que c'tait inutile...


Je n'ai pas dit que c'tait inutile, mais que le nom du package ne doit pas faire parti du nom du fichier *.properties (ce que semble indiqu ton premier message)




> le fichier properties se nomme MessagesBundle_fr_FR.properties
> il est situ dans l'aroborescence suivante :
> 
> 
> ```
> 
> ```


fr.statlife.LAM.IHM correspond bien  un vrai package (c'est  dire aux rpertoire fr/statlife/LAM/IHM) ?

Si oui tu dois utiliser le code suivant :


```
messages = ResourceBundle.getBundle("fr.statlife.LAM.IHM.MessagesBundle", localCourant);
```





> le truc que je n'ai pas encore bien compris, c'est s'il faut ajouter le fichier MessagesBundle_fr_FR.properties au classpath ou pas, et si oui, comment (sous Eclipse)?


Non !

Le classpath ne comporte pas des fichiers simples mais uniquement des emplacements de base (des rpertoires ou des archives jar voir zip). Lorsque tu charges une classe "a.b.C" elle sera recherch sous l'arborescence a/b/C.class  partir des diffrents emplacement du classpath.

Le principe est le mme pour les ressources-bundles, mis  part la gestion des suffixes de langue/pays...

a++

----------


## zaboug

gnial ! a marche  ::ccool:: 

le fichier tait bien au bon endroit et avec le bon nom, mais j'avais pas compris qu'il fallait mettre le nom du package aussi dans le getBundle  ::aie:: 

Merci beaucoup pour les explications sur le classpath, je comprend bien mieux maintenant  ::mrgreen::

----------

