IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

MissingResourceException : ResourceBundle


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut MissingResourceException : ResourceBundle
    Bonjour,
    suite a mon post de hier
    http://www.developpez.net/forums/d84...age-propriete/

    je me suis tourné vers la solution ResourceBundle.
    J'ai donc crée un fichier LangResources.java qui contient 3 classes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    public class LangResources extends java.util.ListResourceBundle 
    {
     
    	public Object[][] getContents() 
    	{
        	return contents;   	
    	}
     
    	static final Object[][] contents =
    	{
    		{"HELLO","   Bonjour   "}
    	};
    }
     
    public class LangResources_fr extends java.util.ListResourceBundle 
    {
     
    	public Object[][] getContents() 
    	{
        	return contents;   	
    	}
     
    	static final Object[][] contents =
    	{
    		{"HELLO","   Bonjour   "}
    	};
    }
     
    public class LangResources_es extends java.util.ListResourceBundle 
    {
     
    	public Object[][] getContents() 
    	{
        	return contents;   	
    	}
     
    	static final Object[][] contents =
    	{
    		{"HELLO","   Buenos dias"}
    	};
    }

    Dans une autre partie de mon code je crée un objet resourceBundle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    	private void setlangUI()
    	{
    		language = System.getProperty("user.language");		
     
    		resourceBundle = ResourceBundle.getBundle("LangResources", new Locale(language));	
     
    	}
    Le tout se compile sans pb mais a l'execution j'ai :

    java.util.MissingResourceException: Can't find bundle for base name LangResources, locale fr
    at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
    at java.util.ResourceBundle.getBundleImpl(Unknown Source)
    at java.util.ResourceBundle.getBundle(Unknown Source)
    at Applet.setlangUI(Applet.java:347)
    at Applet.init(Applet.java:129)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.IllegalAccessException: Class java.util.ResourceBundle$Control can not access a member of class LangResources with modifiers ""
    at sun.reflect.Reflection.ensureMemberAccess(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at java.util.ResourceBundle$Control.newBundle(Unknown Source)
    at java.util.ResourceBundle.loadBundle(Unknown Source)
    at java.util.ResourceBundle.findBundle(Unknown Source)
    at java.util.ResourceBundle.findBundle(Unknown Source)
    ... 6 more



    Mon fichier LangResources.java se trouve au meme niveau que tous les autre .java de mon projet.


    Avez vous un idée de la cause de cette erreur ?

    merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par sylverspoon Voir le message
    Mon fichier LangResources.java se trouve au meme niveau que tous les autre .java de mon projet.
    Et ce "niveau" est-il la racine du classpath ?

    Si ton fichier LangResources est dans le package "org.package", tu dois récupérer le bundle correspondant par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resourceBundle = ResourceBundle.getBundle("org.package.LangResources", new Locale(language));
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Merci CyberChouan.

    Je suis dans le cas du développement d'un applet donc le classpath je ne sais pas bien comment le gérer sur les postes clients.

    Je n'ai pas de package (pas bien), tous mes fichiers.class de mon applet sont regroupé dans un .jar sans arborescence.

  4. #4
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resourceBundle = ResourceBundle.getBundle(ClassLoader.getSystemResource("LangResources"), new Locale(language));

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Citation Envoyé par ngpub Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resourceBundle = ResourceBundle.getBundle(ClassLoader.getSystemResource("LangResources"), new Locale(language));

    a la compilation : cannot find symbol method getBundle(java.net.URL,java.util.Locale)

  6. #6
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pardon, effectivement c'est pas bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resourceBundle = ResourceBundle.getBundle("LangResources", new Locale(language));
    Il existe bien un fichier "LangResources.properties" en plus des LangResources_fr.properties, LangResources_es.properties et autres ?

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Citation Envoyé par ngpub Voir le message
    Pardon, effectivement c'est pas bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resourceBundle = ResourceBundle.getBundle("LangResources", new Locale(language));
    Il existe bien un fichier "LangResources.properties" en plus des LangResources_fr.properties, LangResources_es.properties et autres ?
    En fait je pensais l'avoir dit dans mon premier post, j'ai une fichier LangResources.java qui contient mes classes LangResources, LangResources_fr et LangResources_es

    Je vais essayer avec les .properties ....

  8. #8
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    les fichier .properties ne sont pas des classes, ce sont des fichiers textes :

    LangResources.properties :
    buttontype.ok=Ok
    buttontype.cancel=Cancel
    buttontype.yes=Yes
    buttontype.no=No
    LangResources_fr.properties
    buttontype.ok=Ok
    buttontype.cancel=Annuler
    buttontype.yes=Oui
    buttontype.no=Non
    ...

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Merci, je pensais que cela fonctionnait avec des classes.

    A première vu on dirait que ca fonctionne.

    Merci

  10. #10
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par sylverspoon Voir le message
    Nerci, je pensais que cela fonctionnait avec des classes.
    Ca fonctionne également avec des classes. Cependant, c'est très peu utilisé, car les fichiers properties sont plus simples à manipuler.

    Si ça fonctionne avec des fichiers properties, c'est mieux.

    Maintenant, je pense que ton problème est spécifique au fait que ton code soit dans une applet, pour laquelle il y a des restrictions sur les droits d'accès.
    Tu peux vérifier cette hypothèse en testant cette partie de ton code sur une JVM hors-applet.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par sylverspoon Voir le message
    En fait je pensais l'avoir dit dans mon premier post, j'ai une fichier LangResources.java qui contient mes classes LangResources, LangResources_fr et LangResources_es
    Une seule classe publique par fichier java. Tu devrais avoir un LangResources.java, un LangResources_fr.java et un LangResources_es.java

    de plus il est fortement recommandé d'utiliser des noms de package. Le classloader de sun supportent de moins en moins les classes sans nom de package, c'est contraire aux recommandation et tu va au devant de surprises

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 84
    Par défaut
    Merci a tous, ça fonctionne.

    Avant de devoir internationaliser, j'utilisais un interface TextGUI dans laquelle étaient définies toutes mes textes. Je pouvais accéder a mes textes via TextGUI.HELLO par exemple.
    Pour ne pas a voir a repasser dans tout mon code je pensais faire une fonction qui renseignerait ces attributs mais cela ne fonctionne pas car je ne peux pas modifier les attributs d'une interface....

    Comment faites vous de votre coté ?

Discussions similaires

  1. ResourceBundle.getString sans MissingResourceException
    Par hermes1983 dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 16/09/2009, 10h28
  2. [ResourceBundle] pb ResourceBundle dans un war
    Par dauggui dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 25/04/2006, 20h20
  3. struts[ResourceBundle]
    Par rajawi dans le forum Struts 1
    Réponses: 12
    Dernier message: 30/09/2005, 21h06
  4. [ResourceBundle] Caractères spéciaux
    Par phil_ma dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 07/08/2005, 22h08
  5. [WSAD] ResourceBundle et MissingResourceException
    Par petitelulu dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/09/2004, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo