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 :

Probleme de ressources bundles dans un jar


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Par défaut Probleme de ressources bundles dans un jar
    Bonjour a tous,

    voici mon probleme :
    J'ai un fichier ".propeties" auquel j'accede depuis une appli java.
    Lancé depuis eclipse tout fonctionne sans probleme, mais des que j'essaie de faire un jar executable de cette application, j'ai une MissingRessourcesException.
    Pourtant, la ressources et bien presente dans le jar !

    voici le code me permettant d'acceder a la ressource :



    import java.util.Locale;
    import java.util.ResourceBundle;

    public class LabelsRB {

    private static Locale loc = Locale.ENGLISH;
    public static ResourceBundle rb = null;
    public static String name = null;

    static {
    name = "Labels_";
    rb =
    ResourceBundle.getBundle(
    "editor.ressources.Labels_" + loc.getLanguage());
    }

    public static String getString(String key) {
    try {
    return rb.getString(key);
    } catch (Exception e) {
    System.err.println(
    "Erreur Bundle " + name + " " + key + " non trouve");
    return new String("####");
    }
    }


    }


    Merci pour votre aide !

  2. #2
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Salut à toi.

    Alors première chose, vu que tu es nouveau je te le dis, il FAUT utiliser la balise Code quand tu poste du code, c'est plus lisible. Comme ça quoi :

    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
     
    import java.util.Locale;
    import java.util.ResourceBundle;
     
    public class LabelsRB {
     
    private static Locale loc = Locale.ENGLISH;
    public static ResourceBundle rb = null;
    public static String name = null;
     
    static {
    name = "Labels_";
    rb =
    ResourceBundle.getBundle(
    "editor.ressources.Labels_" + loc.getLanguage());
    }
     
    public static String getString(String key) {
    try {
    return rb.getString(key);
    } catch (Exception e) {
    System.err.println(
    "Erreur Bundle " + name + " " + key + " non trouve");
    return new String("####");
    }
    }
     
     
    }
    Ensuite, pour en revenir à ton problème, le souci c'est que pour accéder à une ressource dans un jar, il faut utiliser le classloader sans cela, tes ressources situés dans le jar ne pourront être trouvées. En clair, remplace la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rb =ResourceBundle.getBundle(
    "editor.ressources.Labels_" + loc.getLanguage());
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rb =ResourceBundle.getBundle(
    this.getClass().getClassLoader().getResource("editor.ressources.Labels_" + loc.getLanguage()).toString());

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Par défaut
    DEsole !

    Et merci !
    Mais encore un probleme, je travaille dans un bloc static !
    je ne peut donc pas faire appel a "this" ?
    Comment faire ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Par défaut
    J'ai remplacer le code comme suit :
    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
     
     
     
    import java.util.Locale;
    import java.util.ResourceBundle;
     
    public class LabelsRB {
     
    	private static Locale loc = Locale.ENGLISH;
    	public static ResourceBundle rb = null;
    	public static String name = null;
     
    	public LabelsRB() {
    		name = "Labels_";
     
    		rb = ResourceBundle.getBundle(this.getClass().getClassLoader().getResource("editor.ressources.Labels_" + loc.getLanguage()).toString());
     
    	}
     
    	public String getString(String key) {
    		try {
    			return rb.getString(key);
    		} catch (Exception e) {
    			System.err.println("Erreur Bundle " + name + " " + key + " non trouve");
    			return new String("####");
    		}
    	}
     
    }
    Et maintenant j'ai une nulle pointer exception sur la ligne
    rb = REssourcesBundle.get....

  5. #5
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Ok...

    Alors essaie comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rb = ResourceBundle.getBundle("editor.ressources.Labels_" + loc.getLanguage(),  loc, this.getClass().getClassLoader());
    et tiens moi au courant.

    C'est plus propre comme ça en plus.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Par défaut
    Arf bon comme ca ca re-marche sous esclipse, mais toujours pas depuis le jar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name editor.ressources.Labels_en, locale en
    Sinon y aurait pas une sombre histoire de classpath des fois ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Accès à des ressources (images) dans des jars du classpath
    Par hodac dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 07/06/2010, 13h10
  2. Probleme avec une image dans un jar
    Par tirisus dans le forum JWS
    Réponses: 0
    Dernier message: 16/10/2009, 15h26
  3. Réponses: 1
    Dernier message: 01/10/2009, 21h08
  4. Réponses: 6
    Dernier message: 07/01/2009, 01h51
  5. Réponses: 3
    Dernier message: 30/07/2004, 11h51

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