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

Entrée/Sortie Java Discussion :

ResourceBundle et properties : emplacement des fichiers


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut ResourceBundle et properties : emplacement des fichiers
    Bonjour à tous,

    J'ai un problème avec l'emplacement des mes fichiers properties. En fait hier en voulant créer un Jar exécutable, je me suis rendu compte que ma gestion des langues de mon application était mauvaise..
    Voici mon classpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" path="src"/>
    	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    	<classpathentry kind="lib" path="libs/commons-net-ftp-2.0.jar"/>
    	<classpathentry kind="lib" path="libs/jdom.jar"/>
    	<classpathentry kind="output" path="bin"/>
    </classpath>
    Donc on voit bien ici, que toutes les classes compilées donc .class seront dans les repertoires correspondant à leur package.

    Voilà ma classe qui gère les langues.

    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
    package Internation;
     
    import java.util.ResourceBundle;
    import java.util.Locale;
     
    public class Langue {
    	private static final String LANGUAGE_FILE = "Language";
    	private static ResourceBundle resourceBundle = ResourceBundle.getBundle(
    			LANGUAGE_FILE, Locale.getDefault());
    	static String currentlang = "";
     
    	public void FonctionBundle(String lang) {
    		currentlang = lang;
     
    		if (lang.equals("en")) {
    			resourceBundle = ResourceBundle.getBundle(LANGUAGE_FILE,
    					Locale.ENGLISH);
    		}
    		if (lang.equals("fr")) {
    			resourceBundle = ResourceBundle.getBundle(LANGUAGE_FILE,
    					Locale.FRENCH);
    		}
     
    	}
     
    	public static String getAnInternationalizeString(String val) {
    		return resourceBundle.getString(val);
    	}
     
    	public static String getLangue() {
    		return currentlang;
    	}
    }

    Mon programme se lance bien si je met mes Language_fr.properties et Language_en.properties dans le repertoire bin (à la racine de bin).

    Vu que j'ai retourné le net pour chercher ce que je voulais, j'ai vu sur
    ce topic : http://www.developpez.net/forums/d88...dle-getbundle/

    professeur shadoko
    Membre éclairé

    professeur shadoko : "Par défaut
    pourquoi ne pas avoir plusieurs jars?
    jars applicatifs
    jars de librairies
    et jars de déploiment contenant les ressources d'internationalisation
    dans ce cas le RessourceBundle trouvera ce qu'il faut.
    (à condition que tous ces jars soient dans le classPath) "

    Je n'ai pas trop compris ce qu'il souhaitait dire, mais il parait comme expérimenté et cette méthode doit être valable.

    Bref je ne peux pas laisser mon programme comme ça, car mon but est de faire un JAR exécutable à la fin, ( et là c'est moi qui place manuellement les properties dans le repertoire bin. ) Je manque de méthode et j'aimerai bien comprendre réellement les resourcesbundles.

  2. #2
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Salut,

    Il te suffit de les rajouter à la racine d'un de tes répertoires sources (Ils seront ainsi embarqués dans le jar).
    Dans ton cas, colles les simplement dans src.

    Sinon une méthode plus propre est de rajouter un répertoire source à ton projet qui s'appellerait par exemple resources et ou tu mettrais toutes tes ressources (properties, images, xml, etc...)

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    et en fait j'ai mis mes images dans un répertoire /img
    Comment je peux faire pour que mes images soient disponibles dans mon jar exécutable ?

    J'ai vu sur le forum qu'il fallait les charger d'une façon bizarre pour palier à ce problème. Quelqu'un peut confirmer ?

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    ça fonctionne en plaçant les properties dans src.

    Je ne comprends pas ta méthode pour la création du dossier Ressources.
    Peux tu expliquer ?

  5. #5
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    Grosso modo il faut dire dans ta stratégie de build que tu as un autre répertoire à ajouter lors de la construction du jar.
    En reprenant ton répertoire img, voilà la tete que devrait avoir ton .classpath (Eclipse je suppose):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="img"/>
    	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    	<classpathentry kind="lib" path="libs/commons-net-ftp-2.0.jar"/>
    	<classpathentry kind="lib" path="libs/jdom.jar"/>
    	<classpathentry kind="output" path="bin"/>
    </classpath>
    Sinon en mode interface:

    Clic droit sur ton répertoire 'img' > Build Path > Use as source folder

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    ah ouais merci pour l'info !

    En revanche je viens d'exporter pour projet en Jar et mes images ne s'affichent toujours pas. Étrange non ?

    ex dans mon splashscreen : je charge l'image comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ImageIcon myImage = new ImageIcon("img/splash.png");
    j'ai bien fait la manip du buildpath sur ce répertoire et mon splash ne s'affiche pas.

    J'ai également des librairies externe JDom et commons.ftp avec le classpath qui est édité ça devrait aller non ??

    Comment peut on faire apparaitre une console pour voir où ça bug ? ( quand on exécute un jar )

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

Discussions similaires

  1. SSL : emplacement des fichiers .pem
    Par nawara3003 dans le forum 4D
    Réponses: 1
    Dernier message: 03/09/2007, 17h38
  2. Réponses: 3
    Dernier message: 29/08/2007, 09h24
  3. [log4j] emplacement des fichiers .log
    Par danyboy85 dans le forum Logging
    Réponses: 7
    Dernier message: 18/01/2007, 07h47
  4. Réponses: 5
    Dernier message: 15/09/2006, 14h26
  5. Réponses: 14
    Dernier message: 24/08/2006, 13h53

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