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

Spring Java Discussion :

[CLASSPATH][PROPERTIES] probleme declaration classpath [Framework]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par défaut [CLASSPATH][PROPERTIES] probleme declaration classpath
    Bonjour tout le monde,

    J'ai une application java 1.5 utilisant spring ioc.
    J'ai mis cette application sous forme de jar (monAppli.jar).
    Tous mes fichiers de type properties sont dans un dossier à part, ils ne font pas partis du jar.
    Mon arborescence est la suivante:

    monDossier
    |
    |--->monAppli.jar
    |--->dossierProperties

    Mon principal problème vient que je me perds un peu dans la déclaration des paths concernant ces fichiers de properties.

    Dans le fichier de config de spring que j'ai appelé configSpring.xml, j'ai besoin des valeurs de certains fichiers properties. Pour cela j'utilise PropertyPlaceholder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="locations">
           	      <list>
                      <value>c:/monDossier/dossierProperties/jdbc.properties</value>
                      <value>c:/monDossier/dossierProperties/data.properties</value> 
                  </list>
         </property>
    </bean>
    <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="url"> <value>${jdbc.url}</value></property>
    ....
    En gros j'ai l'impression que ça ne marche pas parce que mon dossier ne fait pas parti du classpath.J'ai beau essayer de l'ajouter je n'y arrive pas, toujours la même erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [c:/monDossier/dossierProperties/jdbc.properties] cannot be opened because it does not exist
    J'ai beau avoir rajouter le dossier dans le CLASS-PATH au niveau du fichier manifest, et même quand je lance par la commande java -classpath ...

    Je suis preneur de bons conseils et de solution saussi

    Merci.

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Essaie plutôt comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="locations">
           	      <list>
                      <value>c:/monDossier/dossierProperties/jdbc</value>
                      <value>c:/monDossier/dossierProperties/data</value> 
                  </list>
         </property>
    </bean>
    Ou encore mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="locations">
           	      <list>
                      <value>dossierProperties/jdbc</value>
                      <value>dossierProperties/data</value> 
                  </list>
         </property>
    </bean>
    A+

  3. #3
    Rédacteur
    Avatar de Hikage
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 177
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 177
    Par défaut
    Essaie ceci si les code précedent ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="locations">
           	      <list>
                      <value>file:c:/monDossier/dossierProperties/jdbc</value>
                      <value>file:c:/monDossier/dossierProperties/data</value> 
                  </list>
         </property>
    </bean>
    Hikage
    SCJP / SCWCD & SCWSJD Certified / Spring Framework Certified
    [Personal Web] [CV]

    F.A.Q Spring Framework - Participez !

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Je viens de regarder mon projet, et voila la bonne définition, en fonction du context tu peux utiliser via le classpath ou avec un chemin de fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="ignoreResourceNotFound" value="true" />
    		<property name="locations">
    			<list>
    				<value>classpath:config.properties</value>
    				<value>file:/c:/conf/config.batch.properties</value>
    			</list>
    		</property>
    	</bean>

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par défaut
    Merci ca marche ^^

    Sinon une autre petit question: VU que spring utilise les valeurs des fichiers properties, comment faire pour récuperer ces fichiers de properties dans mes class java ? D'ailleurs est ce possible ?
    J'ai vu qu'il existait une class PropertiesFactoryBean j'ai instancier cette class avec mes fichiers properties mais je vois aucune méthode pour récuperer ce que je veux dans mes fichier properties, tout comme la classe PropertyPlaceholderConfigurer


    Merci.

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Pour utiliser facilement les properties dans une classe Java classique via Spring, il existe un moyen simple :

    Premièrement tu déclares un bean qui va pointer sur tes fichiers properties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
    		<property name="basenames">
    			<list>
    				<value>package/fichier</value>
    				<value>package2/fichier2</value>
    			</list>
    		</property>
    	</bean>
    Ma confusion précèdente était liée à la définition de ce bean, différente du PropertyPlaceholderConfigurer.

    Ce type de bean, est utilisé en général pour l'internationalisation.

    Pour l'utiliser, il suffit alors que ta classe Java "implements MessageSourceAware". Il faut aussi qu'elle soit déclarée dans un context spring en tant que bean, afin qu'elle soit injectée automatiquement.

    Tu dois déclarer un attribut de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.springframework.context.MessageSource
    Avec son setteur.

    Ensuite, tu peux regarder les méthodes proposées, notamment les getMessage.

    En fonction de la Locale passée en paramètre, le message sera trouvé, par exemple pour le properties fichier que j'ai définie plus haut dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "package/fichier.properties" // si aucune locale passée ou si la locale n'existe pas
    "package/fichier_en_US.properties" // si la locale en_US est passée.
    voila j'espère que ça va t'aider
    A+

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

Discussions similaires

  1. Génération d'un jar : Probleme de classpath ?
    Par boby62423 dans le forum Langage
    Réponses: 4
    Dernier message: 13/05/2009, 13h04
  2. probleme de classpath avec un jar
    Par lahoucineinfo dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2008, 13h03
  3. Problème de classpath
    Par ekard dans le forum ANT
    Réponses: 10
    Dernier message: 05/10/2006, 10h28
  4. Probleme de classpath
    Par Toulzac dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 20/04/2006, 11h31
  5. [Classpath][packages] problème de lancement de l'appli
    Par gogozep001 dans le forum Général Java
    Réponses: 11
    Dernier message: 19/05/2005, 23h35

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